日期:2014-05-18  浏览次数:20426 次

如何在删除表的每一行的时候都触发Delete的触发器,或者说怎么给表的每一行都添加一个触发器。
求助一个SQL触发器的问题,我创建了一个触发器
create trigger Delete_Trig
on Table_T
instead of delete
as ……
这个触发器只有在一次删除语句后执行一次,可是我想要每次删除一行的时候执行一次,这样的触发器要怎么写啊。
急啊,拜托各位了

------解决方案--------------------
触发器针对操作触发,不是对行触发.

当你写了个delete触发器, 一次删除n(n>=1)条记录时,触发器只执行一次操作,但 deleted表中却记录了你此次操作删除的所有行.

SQL code
create trigger t
on tb
for delete
as
   inset log表 (字段列表) select 要插入的字段列表 from deleted

------解决方案--------------------
SQL code
/*
Table1有c1,c2两列,c1是char类型的,c2是int型的
Table2有c3,c4两列,c2是char类型的,c4是int型的
但删除Table1中的列的时候,根据c2中的数值,把Table2中c3的值等于c1值的这行的c4值减去删除掉的c2的值 
*/
create trigger tr_test
on Table1
for delete
as
set nocount on
update a set a.c4=a.c4-b.c4 from Table2 a inner join DELETED b on a.c3=b.c1
set nocount off
go

------解决方案--------------------
你是不是在查询分析器中只执行了这一句?
update a set a.c4=a.c4-b.c4 from Table2 a inner join DELETED b on a.c3=b.c1