Oracle DBLink+Trigger

本文详细介绍如何在Oracle数据库中通过DBLink实现跨库查询,以及如何创建触发器自动同步数据到另一个数据库。通过具体实例,展示从创建DBLink到使用触发器进行数据同步的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值