COMMIT TRAN只会提交当前事物ROLLBACK TRANSACTION会回滚所有的嵌套事物。

解决方案 »

  1.   

    像你的例子,根本不用加ROLLBACK语句,任何一句出错后隐式事物会回滚整个事物。
      

  2.   

    判断@@error全局变量参数
    当@@error <> 0 时回滚
    在事务处理中只要你没有COMMIT,事务就不会提交,所以在事务提交前判断全局变量@@error参数,出错时就ROLLBACK TRANSACTION,否则COMMIT TRANSACTION
      

  3.   

    那我是不是像如下写就可以了呢,谢谢。BEGIN TRANselect ....
    insert ....
    update ...IF @@error <> 0
    ROLLBACK TRANSACTION
    ELSE
    COMMIT TRAN