zoukankan      html  css  js  c++  java
  • 利用trigger同步Oracle数据库

    oracle不同数据库之间进行同步数据时,可以用触发器来实现,但需要数据库A访问数据库B,那么可以通过创建数据连接来实现,代码如下:
    CREATE DATABASE LINK dblink_test
    CONNECT TO hantest IDENTIFIED BY hantest
    USING '(DESCRIPTION =
    (ADDRESS_LIST =
    (ADDRESS = (PROTOCOL = TCP)(HOST=192.168.1.1)(PORT = 1521)))
    (CONNECT_DATA = (SERVICE_NAME = orcl)
    )
    )';
    其中hantest 为B数据的用户名和密码
    using的内容是B数据库的连接字符串
    创建成功后可以通过下列语句测试是否连接成功
    select loginno,loginpwd,name from t_user@dblink_test
     
    在A数据库与B数据库各创建一个表
    create table hanclasstest(
    classid number(2) primary key,
    classname varchar(10) not null
    );
     
    之后再A数据库hanclasstest创建触发器
     
    CREATE OR REPLACE TRIGGER TEST_TRIGGER
    AFTER DELETE OR INSERT OR UPDATE ON hanclasstest
    for each row
    BEGIN
    IF INSERTING THEN
    --INSERT触发
    insert into hanclasstest@dblink_test values(:new.classid,:new.classname);
    DBMS_OUTPUT.PUT_LINE('记录已经成功插入,并已记录到日志');
    ELSIF UPDATING THEN
    --UPDATE触发
     
    DBMS_OUTPUT.PUT_LINE('记录已经成功更新,并已记录到日志');
    ELSIF DELETING THEN
    --DELETE触发
     
    DBMS_OUTPUT.PUT_LINE('记录已经成功删除,并已记录到日志');
    END IF;
     
    END;
     
    在A数据库中的表hanclasstest 插入一条数据
    insert into hanclasstest values('1','一班');
     
     
    在A数据库查询B数据库中hanclasstest 的数据
    select * from hanclasstest@dblink_test
  • 相关阅读:
    【今日CS 视觉论文速览】Mon, 7 Jan 2019
    文章汇总页面
    【MarkDown】转义字符
    hdu 4678 Mine 博弈论
    hdu 4294 Multiple
    hdu 4291 A Short problem
    hdu 4672 Present Day, Present Time 博弈论
    hdu 3544 Alice's Game 博弈论
    hdu 3389 Game 博弈论
    hdu 2147 kiki's game 博弈论
  • 原文地址:https://www.cnblogs.com/hanshuhe/p/9889766.html
Copyright © 2011-2022 走看看