我创建了一个变量表。在我的存储过程中,有许多事务。
现在当出现错误时,我想回滚一个特定的事务,其中包含从变量表中插入、更新或删除记录的一些语句。
这只是我实际问题的一个例子:
declare @tab table (val int)
insert into @tab select 2
insert into @tab select 3
insert into @tab select 4
select * from @tab
begin tran
begin try
update @tab set val = 1
select 1/0;
commit
end try
begin catch
rollback
end catch
select * from @tab
实际输出为:
![enter image description here](https://istack.dev59.com/RygjP.webp)
![enter image description here](https://istack.dev59.com/tmyo8.webp)
tempdb
事务日志中,但它们运行在内部系统事务下,每个语句执行后都会提交该事务,但该事务不参与外部用户事务。 - Martin Smith