代码之家  ›  专栏  ›  技术社区  ›  RicardoBalda

如何使事务处理覆盖多个存储过程?

  •  3
  • RicardoBalda  · 技术社区  · 15 年前

    我需要在单个数据库中的单个事务中包含多个存储过程, 如果任何一个存储过程失败,则回滚作用域中处理的所有存储过程的事务。

    我使用SQL-Server 2008

    4 回复  |  直到 15 年前
        1
  •  4
  •   Ray    15 年前
    begin transaction
    begin try
      exec proc_1
      exec proc_2
      exec proc_3
      commit transaction
    end try
    begin catch
      rollback transaction
    end catch
    
        2
  •  2
  •   TLiebe    15 年前

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

        3
  •  1
  •   jpg    15 年前

    无法比这更好地描述解决方案。

    Handling SQL Server Errors in Nested Procedures

        4
  •  1
  •   Gratzy    15 年前

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

    .NET示例 http://msdn.microsoft.com/en-us/library/2k2hy99x.aspx 使用ADO.NET