随笔 - 51  文章 - 1  评论 - 7 

利用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
posted on 2018-11-01 15:59  hanshuhe  阅读(852)  评论(0编辑  收藏