sql-server - SQL Server : stored procedure transaction

标签 sql-server stored-procedures transactions

您好,我有一些存储过程可以在我的网站上创建产品和其他内容。现在我必须在事务中运行其中一些。这可能吗,还是我必须仅为事务创建一个存储过程?

我可以说类似的话吗

BEGIN TRAN
"1. stored procedure"
"2. stored procedure"
COMMIT

最佳答案

要添加上面的其他答案,您可能需要添加一些错误处理:

BEGIN TRAN

BEGIN TRY

   EXEC P1

   EXEC P2

   COMMIT TRAN

END TRY
BEGIN CATCH

  ROLLBACK TRAN

END CATCH
<小时/>

使用 C# 代码进行更新(我个人发现将转码保留在存储过程之外和数据层中要容易得多 - 使得稍后阶段更容易编写存储过程):

using (var conn = new SqlConnection(...))

    trans = conn.BeginTransaction();

    try
   {
       ...call P1 using transaction
       ...call P2 using transaction

       trans.Commit();
   }
   catch
   {
       trans.RollBack();
       throw;
   }
}

关于sql-server - SQL Server : stored procedure transaction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12032890/

相关文章:

Mysql 检查一个存储过程是否被另一个存储过程调用

mysql - DECLARE CONTINUE HANDLER FOR NOT FOUND SET 变量不起作用

mysql - 保护表不被插入错误数据

mysql - 从 MYSQL 迁移到 MongoDB 时的 MongoDB 性能

java - Websphere 8.3 上 OFBIZ 的 TransactionManager

mysql - 为什么 MySQL(和 MsSQL)不实现 ANSI_NULLS?

sql - TSQL:解析具有各种字符的字符串

mysql - vb6 中的属性值无效

sql-server - SQL 具有 SUM GROUP BY

.net - 不同版本的 SQL Server 之间的 LINQ to SQL 兼容性