set xact_abort on begin tran ..... 这里的处理 commit tran ...xxx ...yyy ************* 这里的处理如果发生错误,自动回滚后,commit tran后面的...xxx,...y会继续执行吗? 如果会继续执行,在...xxx的地方我怎么知道前面的处理是否已经回滚,我需要加一个标志变量,还是直接有内置变量可以判断???
那就在每个语句后面判断declare @err int begin tran update ... set @err=@@error --必须保存起来 if @err>0 begin print '错误' rollback tran return @err end update ... set @err=@@error --必须保存起来 if @err>0 begin print '错误' rollback tran return @err end commit tran
set xact_abort on
2.也可以在最后设置一个if @@error判断。
begin tran
..... 这里的处理
commit tran
...xxx
...yyy
*************
这里的处理如果发生错误,自动回滚后,commit tran后面的...xxx,...y会继续执行吗?
如果会继续执行,在...xxx的地方我怎么知道前面的处理是否已经回滚,我需要加一个标志变量,还是直接有内置变量可以判断???
begin tran
update ...
set @err=@@error --必须保存起来
if @err>0
begin
print '错误'
rollback tran
return @err
end
update ...
set @err=@@error --必须保存起来
if @err>0
begin
print '错误'
rollback tran
return @err
end
commit tran