在ADO事务处理中,发生以下情况:A、开始事务处理
B、更新Table1
C、根据Table1更新Table2
D、提交事务在C这步时会有问题,因为事务还未提交,数据表Table1处理锁定状态。
所以不能对Table1进行Select。
同时,不能在事务之前Select Table1,因为在C步骤时,需要得到的Table1数据是B步骤更新过的。除非在B步骤先提交事务,再在C步骤之前开始一个新的事务。但这样就不能很好的进行事务回滚,因为可能在D步骤时,要求回滚到A之前。请问如何解决?

解决方案 »

  1.   

    //C、根据Table1更新Table2
    考虑用一张中间表记录table1更新的内容
    然后table2根据中间表来更新
      

  2.   

    不能select Table1的原因是不在同一事务中,另外事务锁定级别是什么?
      

  3.   

    B、更新Table1
    C、根据Table1更新Table2C中能否改为不根据Table1来更新Table2,更新Table1时,将相关的更新数据存放在另外一临时表中,在C时,再从临时表中提数据更新Table2
      

  4.   

    所有操作用同一connection完成这样B、C在同一事务里,不会锁
      
    *****************************************************************************
    欢迎使用CSDN论坛阅读器 : CSDN Reader(附全部源代码) 
    http://www.cnblogs.com/feiyun0112/archive/2006/09/20/509783.html
      

  5.   

    考虑用一张中间(临时表)表记录table1更新的内容
    然后table2根据中间表来更新