我用触发器达到两个数据库这间的数据同步.用到DBLink;本地Oracle1,远程Oracle2
我向Orcale1.Table1输入数据,Table1有触发器,正常情况下Orcale2.table1也会有输入同样的数据.
问题:Orcale1与Orcale2的网线断了,Orcale1连接不上Orcale2
     当Orcale.table1输入数据时,由于触发器执行失败,结果Orcale1.table1和Orcale2.table1都没有输入成功数据.
我要的结果:
    Orcale1.table1能成功输入数据.Oracle2.table1连不上就算了.
这个触发器怎么写才能处理失败后还能成功输入Oracle1.table1.

解决方案 »

  1.   

    将触发器声明为自治事务,则只管理自身事务,不会影响触发他的语句。Oracle 8以前没有这东东
     
     CREATE   TRIGGER   parts_trigger  
      BEFORE   INSERT   ON   parts   FOR   EACH   ROW  
      DECLARE  
            PRAGMA   AUTONOMOUS_TRANSACTION; --将触发器声明为自治事务 
      BEGIN  
            INSERT   INTO   parts_log   VALUES(:new.pnum,   :new.pname);  
            COMMIT;     --   allowed   only   in   autonomous   triggers  
      END;