【问题标题】:Can I rollback a transaction that has multiple inner transactions in SQL Server?我可以回滚 SQL Server 中具有多个内部事务的事务吗?
【发布时间】: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


【解决方案1】:

感谢您的回复。看起来答案是肯定的,一切都会回滚。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2010-12-17
    相关资源
    最近更新 更多