我在模式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