交易尝试/捕获块 - 是否必要?

时间:2015-10-23 09:28:22

标签: tsql

我在SQL过程中有一些我需要在事务中设置的CRUD操作。

BEGIN TRY
  BEGIN TRANSACTION
  --some statements
  COMMIT TRANSACTION
END TRY
BEGIN CATCH
  ROLLBACK TRANSACTION
  --return ERROR_MESSAGE() as output parameter or in select, otherwise it will be supressed
END CATCH

我从服务中调用此过程,并且该调用写在try块中。我的问题是:在没有try / catch块的情况下编写这部分过程是否更好,因为我们将在catch块服务方法中捕获异常?事务会在异常后自动回滚吗?我错了吗?

1 个答案:

答案 0 :(得分:0)

The Catch&回滚将撤消数据库中的任何更改,而WebService中的异常处理只会在错误发生后捕获错误 - 它不会触及数据。

您可以自动回滚SQL中的任何失败事务,或启动Transaction in the WebService,但只是在WebService中捕获异常不会影响任何数据,除非您明确告知它。