我在模式A和表B中的表A中模式B.更新PL/SQL觸發後的用戶之間的兩個
架構B.Table B具有從架構A.Table A截取產品信息(這是產品簡介的主要數據庫)。
何時更新發生在架構A中的產品信息A.表A中,該更新應反映在架構B中。
我怎麼能寫觸發呢?..
我的ProductID兩個表
我在模式A和表B中的表A中模式B.更新PL/SQL觸發後的用戶之間的兩個
架構B.Table B具有從架構A.Table A截取產品信息(這是產品簡介的主要數據庫)。
何時更新發生在架構A中的產品信息A.表A中,該更新應反映在架構B中。
我怎麼能寫觸發呢?..
我的ProductID兩個表
在爲什麼更新觸發之前不會創建一個? tableB的插入僅在整個事務提交時才提交。
編輯:如果你想更新到tableB的,試試這個:
--drop table testtab_a;
create table testtab_a
(
col1 varchar2(10) primary key,
col2 varchar2(10)
);
--drop table testtab_b;
create table testtab_b
(
col1 varchar2(10) primary key,
col2 varchar2(10)
);
insert into testtab_a values ('A', 'B');
insert into testtab_a values ('X', 'B');
insert into testtab_a values ('Z', 'C');
insert into testtab_b values ('A', 'B');
insert into testtab_b values ('X', 'B');
insert into testtab_b values ('Z', 'C');
CREATE OR REPLACE TRIGGER testtab_tr
BEFORE UPDATE
ON testtab_a REFERENCING NEW AS NEW OLD AS OLD
FOR EACH ROW
begin
update testtab_b
set col1 = :new.col1,
col2 = :new.col2
where col1 = :old.col1;
end;
select * from testtab_a;
select * from testtab_b;
update testtab_a set col2 = 'H' where col1 = 'A';
EDIT2:如果您需要在模式間去,你可以使用一個DBLINK。
內觸發使用:
update [email protected]
set col1 = :new.col1,
col2 = :new.col2
where col1 = :old.col1;
請確保您有數據庫管理員通過適當補助設置做你的更新,以及您可能需要(取決於您的ENV)任何同義詞。最後,如果您試圖將這兩個表保持爲「同步」,那麼請不要忘記插入和刪除操作(也可以通過類似的觸發器來處理)。
這是不是複製的答案,但是,這種方法應該非常謹慎地使用。
我不想插入新的記錄到TableB中,我想用表A中新的更新值更新它,它是否可以實現。 ? – msbyuva 2011-02-14 19:54:12
模式A和B在不同的數據庫中嗎?如果沒有這種方式複製數據沒有意義。 – 2011-02-15 12:19:55