begin tran -- 开启事务,transcation 的简写
declare @errorNo int --定义变量,用于记录事务执行过程中的错误次数
set @errorNo=0
begin try
--update TestTable set name='test1' where id in('1','2')
set @errorNo=@errorNo+@@ERROR
select '已修改'
if(@errorNo>0)
begin
--抛出自定义的异常,在最后的catch块中统一处理异常
--666666是用户定义的错误号,可以填中文,16 是错误的严重级别,1 是错误的状态号。
RAISERROR(666666,16,1)
end
end try
begin catch
select ERROR_NUMBER() ErrorNumber, --错误代码
ERROR_SEVERITY() ErrorSeverity, --错误严重级别,级别小于10 try catch 捕获不到
ERROR_STATE() ErrorState, --错误状态码
ERROR_PROCEDURE() ErrorProcedure, --出现错误的存储过程或触发器的名称
ERROR_LINE() ErrorLine, --发生错误的行号
ERROR_MESSAGE() ErrorMessage --错误的具体信息
if(@@trancount>0) -- @@trancount 系统全局变量,事务开启 @@trancount 值+1,判断事务是否开启
begin
rollback tran; -- 回滚事务
end
end catch
if(@@trancount>0)
begin
commit tran; -- 提交事务
end
Sql Server事务
于 2024-04-15 10:47:39 首次发布