--至于删除,应该是不能删除表B的记录(我写错了逻辑表名,应该用deleted)create trigger tr_delete on 表A for delete as delete b from 表B b where exists(select * from deleted where id=b.id)
create table 表A(id int,a varchar(10),b varchar(10)) create table 表B(id int,aa varchar(10),bb varchar(10)) go--触发器 create trigger tr_delete on 表A for delete as delete b from 表B b where exists(select * from deleted where id=b.id) go--插入数据 insert 表A select 1,'AA','AA' union all select 2,'BB','BB'insert 表B select 1,'12','123' union all select 2,'25','654'--删除 delete from 表A where id=2 go--显示最后的结果 select * from 表A select * from 表B go--删除测试 drop table 表A,表B/*--测试结果id a b ----------- ---------- ---------- 1 AA AA(所影响的行数为 1 行)id aa bb ----------- ---------- ---------- 1 12 123(所影响的行数为 1 行) --*/
after delete
as
delete from 表B where id in(select id from deleted)
for delete
as
delete b from 表B b where exists(select * from inserted where id=b.id)
这样把表B的记录全删除了呢?
表A与表B的全删除了!!!
表B没变化。不知道是怎么回事?老大,这个inserted是怎么一回事,麻烦说一下!谢谢!
for delete
as
delete b from 表B b where exists(select * from deleted where id=b.id)
create table 表B(id int,aa varchar(10),bb varchar(10))
go--触发器
create trigger tr_delete on 表A
for delete
as
delete b from 表B b where exists(select * from deleted where id=b.id)
go--插入数据
insert 表A select 1,'AA','AA'
union all select 2,'BB','BB'insert 表B select 1,'12','123'
union all select 2,'25','654'--删除
delete from 表A where id=2
go--显示最后的结果
select * from 表A
select * from 表B
go--删除测试
drop table 表A,表B/*--测试结果id a b
----------- ---------- ----------
1 AA AA(所影响的行数为 1 行)id aa bb
----------- ---------- ----------
1 12 123(所影响的行数为 1 行)
--*/