SQL SERVER:触发器出现异常时,如何退出
1.业务场景:数据库中有两个表:表A,表B
在表B上建立一个触发器:若在表B中插入数据,则在表A中也插入另外一个数据
现在需要模拟当触发器发生异常时:可以捕获异常,使表B仍可以正常插入记录,而表A不能
触发器:
CREATE trigger [deptinfo_add_ltsms]
on [his].[zd_bmks]
after insert
as
begin
begin try
insert his_itf.dbo.test--执行此语句一定会报错,用于模拟触发器错误,测试异常捕获
(USER_ID)
values
('9999999999999999')
end try
begin catch
if (@@error> 0)--异常捕获,但是没有作用,B表无数据
begin
rollback
return
end
end catch
end;
插入语句:(若屏蔽触发器,该语句可正常插入表B)
insert into [ihis].[zd_bmks]
(ksdm,ksmc,kslb,zxbz,yydm)
values
('29986','测试一科','81','0','30')