解决方案 »

  1.   

    谢谢各位大神的指点,只是我还是很在意事如何实现的,能给点码么?bw555这位大侠给点指导,还有sych888,还有wildwave大侠
      

  2.   

    未测试,供参考。Oracle 触发器对本表增删改限制比较多,只能用自治事务。
    CREATE OR REPLACE TRIGGER TR_B_AF_IU
    after  INSERT OR UPDATE 
    ON B
    FOR EACH ROW
     PRAGMA AUTONOMOUS_TRANSACTION;
    BEGIN
    if(:NEW.任务进度=‘完成’) then
      update A  set  任务进度=(select  case  when  count(1)>0  then '未完成' else '完成'  end  from B where 完成情况=‘未完成’ ) and  任务id=.OLD.任务ID
     commit;
    end if;
    END;备注:
    (1)只有before insert触发器中才可以查询或更新本表
    (2)before/after update、before/after delete、after insert5种情况都不可以查询或更新本表。
    (3)使用自治事务可以实现任意触发器查本表。但不能实现在自治事务中更新本表。
      查询本表的情况是最常见的。
      

  3.   

    onemetre 
    问下这个会影响效率么