我在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块服务方法中捕获异常?事务会在异常后自动回滚吗?我错了吗?
答案 0 :(得分:0)
The Catch&回滚将撤消数据库中的任何更改,而WebService中的异常处理只会在错误发生后捕获错误 - 它不会触及数据。
您可以自动回滚SQL中的任何失败事务,或启动Transaction in the WebService,但只是在WebService中捕获异常不会影响任何数据,除非您明确告知它。