Oracle DBLink+Trigger

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章