利用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