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