cha*_*ama 9 sql-server transactions nested sql-server-2005
您可以在一个存储过程中启动事务,然后将其回滚或在嵌套过程中提交吗?
gbn*_*gbn 10
提交和回滚具有不同的效果
发生这种情况是因为SQL Server并不真正支持嵌套事务.
如果您在嵌套的存储过程(而不是事务)中提交或回滚,那么由于启动和输入的@@ TRANCOUNT不匹配,您将生成错误266
回滚问题可以通过使用SET XACT_ABORT ON来解决,这是"自动回滚"(简单地)并且抑制错误266.
提交问题......你不能这样.但是,您可以通过在存储的proc条目上注明@@ TRANCOUNT并仅在零时提交来控制它发生的位置.
有关正确的事务处理,请在此处查看我的答案: 包含TRY CATCH ROLLBACK模式的嵌套存储过程?并且我是否在T-SQL的catch块中回滚之前计算事务?