比如有A,B两张表,更改A后B要修改,更改B后A也要修改

解决方案 »

  1.   

    在A和B下各建一个触发器来实现,触发器 Trigger
      

  2.   

    我写了触发器的,但是会报错的,因为在跟新A的时候触发A的事件修改了B,于是B的触发器也激活了,于是报错了,A表数据被更改不能在触发器中调用
      

  3.   

    触发A的时候,先屏蔽掉B触发器,update后放开,B亦然
      

  4.   

    怎么去实现屏蔽啊,在触发器中不能出现 alter 语句
      

  5.   

    你为了保证A表和B表的数据一致,那么在写入A表数据后,将该条数据作为条件查询下B表,如果没有数据则插入,否则就结束。B表的触发器一样的逻辑,这样怎么会报错呢!
    我这个是笨办法!比较直接点!
      

  6.   

    execute immediate 'alter trigger B disable'; 不行?
      

  7.   

    我测试是可以的。。触发tri2的同时disable掉了tri1 ,要定义成自由transaction
     
    create or replace trigger tri2
    before insert or update or delete
    on t2
    for each row
    DECLARE
    pragma autonomous_transaction; 
    begin
    execute   immediate 'alter trigger tri1 disable';
    end;
    /