如何使交易涵盖多个存储过程?

时间:2009-10-22 16:31:41

标签: sql-server sql-server-2008 stored-procedures transactions

我需要在单个数据库中的单个事务中包含多个存储过程, 如果任何存储过程失败,则回滚在范围内执行的所有存储过程的事务。

我使用SQL-SERVER 2008

4 个答案:

答案 0 :(得分:4)

begin transaction
begin try
  exec proc_1
  exec proc_2
  exec proc_3
  commit transaction
end try
begin catch
  rollback transaction
end catch

答案 1 :(得分:2)

您可以创建一个启动事务的存储过程,然后调用其他存储过程。如果任何内部存储过程失败,您可以回滚事务。如果您告诉我们您正在使用的数据库平台(MS SQL Server,MySQL等),人们可能能够提供更具体的解决方案。

答案 2 :(得分:1)

事务通常在连接级别,因此如果您想通过代码API控制事务,您应该能够使用相同的“事务对象”。

.Net示例http://msdn.microsoft.com/en-us/library/2k2hy99x.aspx使用ado.net

答案 3 :(得分:1)

不能比这更好地描述解决方案。

Handling SQL Server Errors in Nested Procedures