当前位置: 代码迷 >> Sql Server >> 事物回滚记要
  详细解决方案

事物回滚记要

热度:59   发布时间:2016-04-24 09:12:15.0
事物回滚记录
我希望在回滚时,将报错信息写入到某张LOG表里面,
但是我发现,就算事物回滚了,也不会在 
begin catch 
end catch
直接执行INSERT语句,不知道是怎么回事?
CREATE TABLE [dbo].[TableTest](
[Id] [int] IDENTITY(1,1) NOT NULL,
[errerStr] varchar(max) 
) ON [PRIMARY]
select * from [TableTest]
delete from [TableTest]

CREATE Proc procTest
as
begin try  
begin transaction 
insert into [TableTest] ([errerStr]) values (convert(varchar(20),5/0)); 
commit transaction 
end try 
begin catch 
 insert into [TableTest] ([errerStr]) values ('回滚'); 
rollback transaction 
end catch

------解决思路----------------------
因为这上操作同样被回滚了

你可以放到后面去

CREATE Proc procTest
as
begin try  
begin transaction 
insert into [TableTest] ([errerStr]) values (convert(varchar(20),5/0)); 
commit transaction 
end try 
begin catch 
rollback transaction 
 insert into [TableTest] ([errerStr]) values ('回滚'); 
end CATCH
  相关解决方案