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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM