--给你一个例子:
create table t_a(id int identity(1,1),username varchar(20))
create table t_b(id int identity(1,1),username varchar(20))
create trigger tr_a on t_a
for update,insert,delete
as
alter table t_b DISABLE TRIGGER tr_b
----------------------------------
if not exists (select * from deleted) --插入
insert t_b(username) select username from inserted
else if not exists (select * from inserted)--删除
delete t_b where id in (select id from deleted)
else--更新
update a set a.username=i.username from t_b as a,inserted as i where a.id=i.id
alter table t_b ENABLE TRIGGER tr_b
------------------------------------------
create trigger tr_b on t_b
for update,insert,delete
as
alter table t_a DISABLE TRIGGER tr_a
----------------------------------
if not exists (select * from deleted) --插入
insert t_a(username) select username from inserted
else if not exists (select * from inserted) --删除
delete t_a where id in (select id from deleted)
else --更新
update a set a.username=i.username from t_a as a,inserted as i where a.id=i.id
alter table t_a ENABLE TRIGGER tr_a
select * from t_a
select * from t_b
--测试:
insert t_a(username) values('test')
insert t_b(username) values('test2')
update t_a set username='test1' where id=1
update t_b set username='test3' where id=1
delete from t_a where id=1
delete from t_b where id=2
--------------------------
select * from t_a
select * from t_b
create trigger tr
on A
for update
as
if exists(select 1 from B join inserted I on I.ID=B.ID)
begin
update B
set name=I.name,
address=I.address
from B
join inserted I on I.id=B.id
end
go