20

我从来不明白嵌套事务有什么好处。提交嵌套事务不会提交任何内容 - 它只是减少了@@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

请给我一个例子,为什么要使用嵌套事务以及它们如何产生影响。

4

2 回答 2

14

嵌套事务允许您的代码调用使用事务本身的其他代码(例如 SP),而无需在提交时实际提交事务。

也就是说,您可以使用安全点在事务内部回滚。

有一篇CodeProject 文章专门讨论这个问题。

于 2012-06-09T11:45:03.260 回答
0

如果您遇到调用一个 SP 的场景,其中包含另一个 SP 调用。并且内部 SP 也可以独立于您的应用程序调用。在这种情况下,有必要将内部事务(在内部 SP 上)以及父 SP 上。

于 2015-05-15T06:24:39.163 回答