1、建立DBLink
A库想查B库的东西。可以在A库上建一个DBLINK,单向,不需要在B上建,除非B也想查A的东西.
CREATE [SHARED] [PUBLIC] database link link_name
[CONNECT TO [user] [current_user] IDENTIFIED BY password]
[AUTHENTICATED BY user IDENTIFIED BY password]
[USING 'connect_string']
实例:
在A库上建一个DBLINK
create public database link lcDblink connect to phdev_jzk_20191125 identified by crux using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 10.10.xxx.xxx)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = ufgovdb1)))';
2、建立触发器Trigger
2.1 A库中创建一个测试表:
create table lctestTrigger_user(
id number(11) primary key,
username varchar(50),
password varchar(50)
);
2.2 A库中创建触发器:
靓点:触发器中执行dblink 往B库中的lctestTrigger_user_phdev表中插入对应数据。
CREATE OR REPLACE TRIGGER MY_Trigger
after INSERT ON lctestTrigger_user
FOR EACH ROW--对表的每一行触发器执行一次
DECLARE
NEXT_ID NUMBER;
BEGIN
--:old代表旧值 ---:new 代表新值
insert into lctestTrigger_user_phdev@lcDblink(username,password) values(:NEW.username, :NEW.password);
END;
2.3 向A库的表lctestTrigger_user中插入数据:
insert into lctestTrigger_user(id,username,password) values(1,'admin','admin');
insert into lctestTrigger_user(id,username,password) values(2,'fgz','fgz');
insert into lctestTrigger_user(id,username,password) values(3,'test','test');
2.4 B库中创建一个测试表lctestTrigger_user_phdev:
create table lctestTrigger_user_phdev(
username varchar(50),
password varchar(50)
);
2.5 在A库的表lctestTrigger_user 查询插入的数据:
SELECT * FROM lctestTrigger_user
2.6 在B库中查询lctestTrigger_user_phdev表数据。根据A库中的 MY_Trigger 触发器 和触发器中的DBLink 向B库中的表后台插入数据。
SELECT * FROM lctestTrigger_user_phdev