标签: code

在使用 TRY CATCH 的 SQL Server 中提交事务的最佳实践

在 SQL Server 代码块中,放置提交事务的最佳位置是什么?在 try catch 块内部还是外部?

例如,选项 A 或选项 B 是正确的方法还是主观选择?

选项A

CREATE PROCEDURE DummyProc 
BEGIN TRY
      BEGIN TRANSACTION
      INSERT sometable(a, b) VALUES (@a, @b)
      INSERT sometable(a, b) VALUES (@b, @a)
      COMMIT TRANSACTION
   END TRY
   BEGIN CATCH
      IF @@trancount > 0 ROLLBACK TRANSACTION
      DECLARE @msg nvarchar(2048) = error_message()  
      RAISERROR (@msg, 16, 1)
      RETURN 55555
   END CATCH   
Run Code Online (Sandbox Code Playgroud)

选项B

CREATE PROCEDURE DummyProc 
BEGIN TRY
      BEGIN TRANSACTION
      INSERT sometable(a, b) VALUES (@a, @b)
      INSERT sometable(a, b) VALUES (@b, @a)

   END TRY
   BEGIN …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql transaction exception code

5
推荐指数
2
解决办法
2万
查看次数

标签 统计

code ×1

exception ×1

sql-server ×1

t-sql ×1

transaction ×1