-- TRY ... CATCH 不处理编译错误(如,语句的语法)和语句级重编译错误(如,由于对象名延时解析而造成
-- 在编译后出现对象名解析错误),前者会导致批处理不执行,而后者会导致终止执行批处理中出错的以及之-- 后的所有语句。
-- 通过开启 xact_abort 选项,可以让事务回滚。但此类错误无法被 try ... catch 模块捕获/处理。
set xact_abort on
begin try
begin tran
update bank set ban_over = ban_over + 1000 where ban_name = '李四' --1
update ban set ban_over = ban_over - 1000 where ban_name = '张三'--2
commit tran
end try
begin catch
if xact_state() = -1
print 'Transaction is open and uncommitted.';
rollback tran;
end catch
set xact_abort off
事务无法回滚
最新推荐文章于 2023-10-24 15:24:04 发布