环境:两个异地数据库  A 和 B  通过DB_LINK连接
操作:从A库中的tab_a中取数据插入到B库中的tab_b中,然后修改A库tab_a.isused字段的值。
问题:当插入到B成功后,在修改A库tab_a.isused字段的值时突然数据库链路中断连接,导致无法修改tab_a.isused字段的值,这时能让刚才插入的数据也回滚吗?

解决方案 »

  1.   

    oracle支持,只要你写在一个事务里即可
      

  2.   

    这个不用你来担心.oracle有自己的2pc
      

  3.   

    不会的啊.你怎么写的?你在procedure中可以做异地的更新.然后在触发器上调用
      

  4.   

    我的触发器:
    CREATE OR REPLACE TRIGGER HD_QHD.LEO_TRIG
    AFTER DELETE OR INSERT OR UPDATE
    ON HD_QHD.LEO_EMS 
    REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    declare 
    --pragma autonomous_transaction; 
      sbz  varchar2(2);  --  增加删除修改标志位BEGIN
      -- your code here 
      -- (Trigger template "Default" could not be loaded.)   if updating then
      if updating then
      sbz := 'u';
      insert into leo_eam@ems_eam (COD,nam,bz ) values(:new.cod ,:new.nam, sbz);
      end if;
      if inserting then
      sbz := 'i';
      insert into leo_eam@ems_eam (COD,nam,bz ) values(:new.cod ,:new.nam, sbz);
      end if;
      if deleting then
      sbz := 'd';
      insert into leo_eam@ems_eam (COD,nam,bz )  values(:old.cod ,:old.nam, sbz);
      end if;exception when others then 
    --  raise ;
    sbz:='er';end;