嵌套事务的目的

时间:2012-06-09 11:41:30

标签: sql-server database transactions nested-transactions

我从未理解嵌套交易有什么用处。提交嵌套事务不会提交任何内容 - 只会减少@@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

请举例说明为什么要使用嵌套交易以及它们如何产生影响。

问候,Petar

2 个答案:

答案 0 :(得分:9)

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

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

CodeProject article致力于此。

答案 1 :(得分:0)

如果您正在调用一个SP,其中包含其他SP呼叫。并且可以独立于您的应用程序调用内部SP。在这种情况下,它必须放置内部事务(在内部SP上)以及在父SP上。