在A表上有一个AFTER DELETE触发器! 触发器是更新B表的一个字段值.现在偶尔会发现A表中一条记录没了,但B中相应的数据中的字段值没有被更新!请各位发表一下看法,有些什么情况会导致这种现像! 谢谢!!!

解决方案 »

  1.   

    CREATE OR REPLACE TRIGGER tri_xxx_ad
      AFTER DELETE ON xxx.xxxx
      FOR EACH ROW
    DECLARE
    BEGIN
      -- 添加跟踪数据
      INSERT INTO xxx.xxx_trace
        (x,
         x,
         x,
         x,
         x,
         x,
         x,
         x,
         x,
         x,
         x,
         x)
        SELECT xxx_s.NEXTVAL,
               :OLD.x,
               :OLD.x,
               :OLD.x,
               :OLD.x,
               x,
               x,
               :OLD.x,
               :OLD.x,
               :OLD.x,
               :OLD.x,
               x
          FROM dual;  -- 更新
      UPDATE xxxx.xxxx
         SET x = 0, last_updated_date = SYSDATE
       WHERE xx = :OLD.xx;END;
      

  2.   

    1  你如何判读数据没了了  也许是被update了   不是被delete了 所以没记录
    2  查看你的trigger是否还有效   user_trigger   status
      

  3.   

    系统触发器对拥有IMP_FULL_DATABASE、DBA等角色的用户无效