日期:2014-05-19  浏览次数:20468 次

SQL2000的触发器?
在使用触发器过程中发现了一个问题,当触发器update(column)时,批量更改column和每次更改column有很大区别,为什么批量更改column,触发器只执行一次,而不是每更改一行就执行一次触发器呢?

------解决方案--------------------
sql server就是这样,没办法。
------解决方案--------------------
因為批量修改的時候只有一條SQL語句。所以只觸發一次
------解决方案--------------------
所以你的触发器代码要进行批量处理
------解决方案--------------------
看来楼上都不大了解触发器啊

触发器是针对一个事务而言,而不是根据数据记录来做触发的。
inserted deleted是可以当作是临时表,但不是一条记录的临时表,而是批处理的临时表(一个事务的临时表)

理解这个才能做触发器啊,大家看例子太多,其实那些根本是极简单的例子,而没有对其做真正解释。估计很多人就是根据样例用触发器的,那么这些触发器从应用来说就是非常不完整的
------解决方案--------------------
正如mengmou()mengmou() 所说批量处理一样,直接获取ID的写法是不正确的,因为这样只会获得最后一个ID,而其实是一个ID集合
------解决方案--------------------
一次触发,完成一次处理,这一次处理完成了些什么工作,工作多少不重要。所以,updata多行和updata一行,都只是触发了一次触发器。也可以这么理解,触发器本身不会自己触发自己。所以,在批量修改时,不会没更改一行就触发一次。