求助一个SQL触发器的问题,我创建了一个触发器
create trigger Delete_Trig
on Table_T
instead of delete
as ……
这个触发器只有在一次删除语句后执行一次,可是我想要每次删除一行的时候执行一次,这样的触发器要怎么写啊。
急啊,拜托各位了
------解决方案--------------------
触发器针对操作触发,不是对行触发.
当你写了个delete触发器, 一次删除n(n>=1)条记录时,触发器只执行一次操作,但 deleted表中却记录了你此次操作删除的所有行.
- SQL code
create trigger ton tbfor deleteas 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_teston Table1for deleteasset nocount onupdate a set a.c4=a.c4-b.c4 from Table2 a inner join DELETED b on a.c3=b.c1set nocount offgo
------解决方案--------------------
你是不是在查询分析器中只执行了这一句?
update a set a.c4=a.c4-b.c4 from Table2 a inner join DELETED b on a.c3=b.c1