我一直不明白嵌套事务有什么好处。提交嵌套事务不会提交任何内容 - 它只会减少
@@TRANCOUNT
。并且 ROLLBACK
会回滚所有内容。
BEGIN TRANSACTION
//do an update
BEGIN TRANSACTION
//do an insert
COMMIT TRANSACTION
COMMIT TRANSACTION
这有什么区别:
BEGIN TRANSACTION
//do an update
//do an insert
COMMIT TRANSACTION
请给我一个例子,为什么应该使用嵌套事务以及它们如何产生影响。
嵌套事务允许您的代码调用其他代码(例如 SP),这些代码使用事务本身,而无需在 他们提交时实际提交 您的事务。
也就是说,您可以使用安全点在事务内部回滚。
有一篇 CodeProject 文章 专门讨论这一点。
如果您遇到这样的情况:您呼叫一个 SP,其中包含另一个 SP 呼叫。并且该内部 SP 也可以独立于您的应用程序进行调用。在这种情况下,有必要将内部事务(在内部 SP 上)以及父 SP 上放置。