我希望在回滚时,将报错信息写入到某张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