Sql server 这些代码段是否等效(';在';上设置xact_abort;与';try catch rollback';)?
我曾在SQL Server中的存储过程中使用此代码段:Sql server 这些代码段是否等效(';在';上设置xact_abort;与';try catch rollback';)?,sql-server,xact-abort,Sql Server,Xact Abort,我曾在SQL Server中的存储过程中使用此代码段: create procedure proc_name --declare variables as set nocount on begin transaction begin try --do something commit transaction end try begin catch rollback transaction ;t
create procedure proc_name
--declare variables
as
set nocount on
begin transaction
begin try
--do something
commit transaction
end try begin catch
rollback transaction
;throw
end catch
go
但今天我知道了“SETXACT_abort on”的说法。
下面的代码与前面的代码等效吗?他们之间有什么不同吗
create procedure proc_name
--declare variables
as
set nocount on
set xact_abort on
begin transaction
--do something
commit transaction
go
引用
TRY…CATCH构造捕获所有严重性高于10且未关闭数据库连接的执行错误
因此,try-catch不能捕获所有可能的错误。除了尝试捕获外,还可以在上使用xact_abort
try/catch为您提供了更大的灵活性,也就是说,当某件事情不愉快时,您不仅限于回滚。“try-catch不会捕获所有可能的错误”。当遇到任何错误,包括严重性级别的警告时,xact_abort将回滚tran