当前位置: 代码迷 >> Sql Server >> 怎么在删除表的每一行的时候都触发Delete的触发器,或者说如何给表的每一行都添加一个触发器
  详细解决方案

怎么在删除表的每一行的时候都触发Delete的触发器,或者说如何给表的每一行都添加一个触发器

热度:46   发布时间:2016-04-27 17:22:28.0
如何在删除表的每一行的时候都触发Delete的触发器,或者说怎么给表的每一行都添加一个触发器。
求助一个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
  相关解决方案