【求助】进来看看我的触发器写的哪里有问题????

Awegs 2012-12-14 03:56:34
快照名:sn_wbb1k
目的数据库表=源数据库表(表结构完全相同):w_bb1k
快照无问题
关联刷新一切ok,但是我想加一个触发器,实现单向刷新(当源数据库表改变时,目的数据库表跟着改变,但目的数据库表改变时,源数据库表不改变).

源数据库表是否发生改变,从快照就能判断出来,大神们就不用我这菜鸟唠叨了...直接上代码



create or replace trigger TRI_sn_wbb1k_AFR
after insert or update or delete on sn_wbb1k
for each row
begin
if deleting then
delete from w_bb1k where wabe01k = :old.wabe01k;
end if;
if inseting then
insert into w_bb1k
(wabe01k,
wabb013,
wabb712,
wabb853,
wabb854,
wabb703,
wabb704,
wabb706,
wabb705,
wabe111,
wabb718,
waae100,
waae011,
waae036,
waae037,
wabb016,
wabb707,
wabb708,
wabb725,
wabe011,
wabe110,
wabe102,
waae013,
wabb878,
wabb722,
wabb880,
oddnumbers)
values
(:new.wabe01k,
:new.wabb013,
:new.wabb712,
:new.wabb853,
:new.wabb854,
:new.wabb703,
:new.wabb704,
:new.wabb706,
:new.wabb705,
:new.wabe111,
:new.wabb718,
:new.waae100,
:new.waae011,
:new.waae036,
:new.waae037,
:new.wabb016,
:new.wabb707,
:new.wabb708,
:new.wabb725,
:new.wabe011,
:new.wabe110,
:new.wabe102,
:new.waae013,
:new.wabb878,
:new.wabb722,
:new.wabb880,
:new.oddnumbers);
end if;
if updating then
update w_bb1k
set wabb013 = :new.wabb013,
wabb712 = :new.wabb712,
wabb853 = :new.wabb853,
wabb854 = :new.wabb854,
wabb703 = :new.wabb703,
wabb704 = :new.wabb704,
wabb706 = :new.wabb706,
wabb705 = :new.wabb705,
wabe111 = :new.wabe111,
wabb718 = :new.wabb718,
waae100 = :new.waae100,
waae011 = :new.waae011,
waae036 = :new.waae036,
waae037 = :new.waae037,
wabb016 = :new.wabb016,
wabb707 = :new.wabb707,
wabb708 = :new.wabb708,
wabb725 = :new.wabb725,
wabe011 = :new.wabe011,
wabe110 = :new.wabe110,
wabe102 = :new.wabe102,
waae013 = :new.waae013,
wabb878 = :new.wabb878,
wabb722 = :new.wabb722,
wabb880 = :new.wabb880,
oddnumbers = :new.oddnumbers
where wabe01k = :old.wabe01k;
end if;
end TRI_sn_wbb1k_AFR;




这个触发器只要打开了,快照都无法刷新出源数据库的数据了,并且目的数据库想修改的表也没有任何修改效果,当把此触发器禁用后,快照恢复正常,因此我认为是触发器写的有问题,但是我找不到问题在哪?希望有人可以帮到我
...全文
162 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
smile__110 2012-12-17
  • 打赏
  • 举报
回复
qq1916685285 2012-12-17
  • 打赏
  • 举报
回复
2楼正确,同意
linwaterbin 2012-12-16
  • 打赏
  • 举报
回复
1)每一个DML事务完成后,在触发器里面写好commit 2)pragma autonomous_transaction;
大连豆包 2012-12-15
  • 打赏
  • 举报
回复
如果设置了外键关联,就会出错,而触发器里没有对错误做出处理,错误会返回上层,在上层会进行回滚,所有没有任何变化,可以将外键暂时失效,如果失效后好用,可能问题就出在after上了。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧