你好我有一些存储过程来创建我的网站上的产品和其他东西.现在我必须在一个交易中运行其中的一些.这是可能的,还是只能为交易制定存储过程?
我可以说些什么吗
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#代码进行更新(我个人觉得将trans代码从sprocs和数据层中保存起来容易得多 – 使得在稍后阶段更容易构建存储过程):
using (var conn = new sqlConnection(...)) trans = conn.BeginTransaction(); try { ...call P1 using transaction ...call P2 using transaction trans.Commit(); } catch { trans.RollBack(); throw; } }