如何在多个SQL过程中使用事务?

时间:2012-05-08 07:42:40

标签: sql sqltransaction

我想通过sql过程启动事务,运行其他2个过程,然后使用命令'commit'运行第一个过程。 你相信这可能吗?我试过但收到了错误。 EXECUTE之后的事务计数表示BEGIN和COMMIT语句的数量不匹配。先前的计数= 0,当前计数= 1.

2 个答案:

答案 0 :(得分:0)

这是因为SQL Server并不真正支持嵌套事务。

如果您在嵌套的存储过程(而不是事务)中提交或回滚,那么由于启动和输入的@@ TRANCOUNT不匹配,您将生成错误266。

您应该将BEGIN TRAN和COMMIT配对在同一个SPROC中。

如果没有嵌套事务的概念,那么你需要在同一个sproc中进行回滚/提交。您可以使用SET XACT_ABORT ON来抑制由不匹配的@@ TRANCOUNT引起的错误266。

答案 1 :(得分:-1)

不确定sql server中的嵌套事务 但你可以尝试这个

Begin Try
 Begin Transaction1
  Call Proc1
   Call Proc2
   Call Proc3
 Commit
 End Transaction
Catch
 Rollback