参考:
http://www.gzit.edu.cn/gut/magazine/xb991/99xb1-3/99xb13-6.html

解决方案 »

  1.   

    oracle 和 mssql 中触发器是不一样的.
      

  2.   

    我认为是一次。
    首先,就DELETE而言,不管你一次删除多少行,只要有一行破坏了触发器,整个删除语句撤销,返回错误,不删除任何行。实际上是一个事务。
    同样,触发器也是个事务,它在DELETE发生的时候被激活,执行触发器的T-SQL代码,如此而已。
    如果认为是多次激活触发器的话,可以尝试一下删除多行,而其中的行对应于触发器中的不同响应,查看结果,是有的对应结果存在,还是一个都没有?这样就可以知道了是一个事务,还是多个事务了,也就是到底触发了几次删除触发器
      

  3.   

    只触发1次
    如:
    creaet ....
    for delete
    as
      select * into 临时表 from deleted
    ---------------^^^^^^^生成的表有多条记录
      

  4.   

    我认为只触发一次
    你可以将触发器改成:
    create.....
    for delete 
    as
    delete from table1 where id in(select id from deleted)