【发布时间】:2019-06-28 15:57:56
【问题描述】:
我听说如果有嵌套事务,内部事务将不会被提交。
例如,我有一个父过程和大约几个子过程,每个过程都带有 begin tran/commit/rollback。
Parent Procedure
- Inner Procedure1 (has being tran/commit/rollback tran)
- Inner Procedure2 (has being tran/commit/rollback tran)
- Inner Procedure3 (has being tran/commit/rollback tran)
- Inner Procedure4 (has being tran/commit/rollback tran)
- Inner Procedure5 (has being tran/commit/rollback tran)
我需要调试父过程,但我需要在最后回滚事务,而不是提交它所做的一切。这是一个巨大的过程。
如果我这样做
Begin tran
- (parent procedure)
-- Inner Procedure1
-- Inner Procedure2
-- Inner Procedure3
-- Inner Procedure4
-- Inner Procedure5
rollback tran
假设任何地方都没有错误,所有过程中发生的一切都会回滚吗?
【问题讨论】:
-
记不住的时候一般都会去这里:sqlskills.com/blogs/paul/…
-
是的,它会的。但是,如果任何子 SP 回滚 tran,则整个 tran 都会回滚。
-
思考问题的最佳方式是“SQL Server 中没有真正的“嵌套”事务”......回滚会将所有内容回滚,而不仅仅是最后一个 BEGIN TRAN。
标签: sql sql-server transactions