日期:2014-05-17  浏览次数:21065 次

四个表关联的触发器
各位大神,关于触发器的,请教一个问题,有四张表A,B,C,D,四个表中都有一个字段X,想实现不管修改上述哪个表中的X值,其他三张表都自动触发更新,请问题有啥办法实现没?老是被锁住,感谢!
------解决方案--------------------
create or replace trigger tri_iud
before insert or delete or update on table_a
for each row
begin 
 if inserting then 
    insert  tableB ( x)  values(:new.X);
    insert  tableC (x) values(:new.X);
    ...
  end if ;
  if  updating then
    update tableB  set x = :new.X where x =:OLD.x;
    update tabelC  set x =:new.X where x =OLD.X;
     ..
 end if ;
  if deleting then 
     delete from tableB where x=:old.x;
     delete from TableC where x =:old.x;
   ..
end if 
end tri_iud;
/
    
------解决方案--------------------
你在触发器中做个判断,如果X的值已经是等于待更新的值,就不要做更新。
这样应该能避免循环死锁吧