1,Begin transaction 开启一个事务,@@trancount 增加,可以为开启的事务命名
begin transaction tranname,这样rollback transaction 的时候,就可以选择性的回滚事务,而不是回滚到最外层事务。
多个tranname可以相同,但是在rollback transaction tranname时,会回滚到最外层的tranname,导致@@trancount减少多个。
2,Save transaction 不会开启一个事务,只是在事务内增加一个SavePoint,@@trancount不变。
save transaction savepointname 是必须的,多个savepoint的name可以是相同的,在rollback transaction savepointname的时候,只回滚到最内层的上一个savepoint。
3,rollback transaction 回滚事务或SavePoint
rollback transaction 将整个事务回滚,@@trancount减少到0
rollback transaction savepoint,只是在一个事务内,回滚到上一个SavePoint,而不是回滚整个事务,@@trancount不变
rollback transaction tranname,是回滚到tranname标识的最外层事务,@@trancount 减1或多个。
select * from [dbo].[test] print @@trancount begin tran tx begin tran tx update dbo.test set id=4 save tran tx update dbo.test set id=2 save tran tx update dbo.test set id=3 rollback tran tx rollback tran tx rollback tran tx
时间: 2024-10-10 01:40:43