这是我犯的一个错误。
昨天被人问到,如果编写了一个Delete触发器,那么如果删除1行和删除100行的行为是否有不一样呢?
我回答是不一样,删除100行的话,触发100次。回答之后马上意识到这可能是有问题的,回来验证一下之后,证实是发生1次。
所以,触发器并不是基于行的,而是基于操作的。
在触发器中,如何得到当前操作所影响的行数呢?通过@@rowcount这个系统变量
要得到当前插入的所有行的数据,可以读取INSERTED这个表,要得到当前删除的所有行的数据,可以读取DELETED这个表。