MSSQL嵌套触发器-编写方法分享

嵌套触发器概念

在触发器A中运行的sql脚本,引起触发器B工作,触发器B又引起触发器C工作,
我们把触发器A 触发器B 触发器C称之为 嵌套触发器

嵌套触发器时间举例

 
create table  tableA(keyId int)
create table tableB(keyId int)
create table tableC(keyId int,delflag int ,updatetime datetime)
go;
/*
新建触发器tr_tableA_del,当表tableA删除数据时,触发器会将删除数据插入至 b中,
此时由于b表插入数据,会触发b表中的触发器 tr_TableB_ins ,对表C中的数据进行操作
*/
create  trigger tr_TableA_del
on tableA
for delete
as
 insert into tableB(keyId) select keyId from deleted
 go;


create  trigger  tr_TableB_ins
on tableB
for insert
as

update  tableC set delFlag=1,updatettime=getdate() where keyId from inserted 
go;


insert into tableA(keyId)values(1),(2),(3)
insert into tableC(keyId)values(1),(2),(3)
go
/*
当我们对tableA表进行数据删除操作时,会触发嵌套触发器的操作,所以c表中的数据发生了更新操作
*/
delete from tableA where keyId=1 
go;
select * from tableC; 
select * from tableB;
select * from tableA;
go;