一段Delphi的程序
   FrmPublicDM.LabDBConnection.BeginTrans;//姑且叫他大事务
   Try
     保存数据Update
     ...
     调用了一个存储过程
      ...
     FrmPublicDM.LabDBConnection.CommitTrans; 
   Except
     FrmPublicDM.LabDBConnection.RollbackTrans; 
   End  调用的存储过程也有一个事务处理,Begin和Commit 因为只有一个活动事务,所有大的事务被意外的提交了。保存的数据没保存上。
  但是为什么连续执行这段代码两次,第2次要保存的数据就可以保存的上,也就是说大的事务也被提提交了。(调用的存储过程没有条件判断)。