sqlbefore
‘壹’ sql2000支持before 和 after吗
不支持before,可以用instead of 来替代,不过用法有很大的区别。
SQL Server 2000 支持两种类型的触发器:
AFTER 触发器和INSTEAD OF 触发器。
FOR触发器不是before,SQL Server只有INSTEAD OF和AFTER 两种触发器。默认识AFTER 的,所以说 FOR触发器就是AFTER 触发器。
<1>AFTER 触发器
AFTER 触发器即为SQL Server 2000 版本以前所介绍的触发器。该类型触发器要求只有执行某一操作(INSERT UPDATE DELETE) 之后,触发器才被触发,且只能在表上定义。可以为针对表的同一操作定义多个触发器。对于AFTER 触发器,可以定义哪一个触发器被最先触发,哪一个被最后触发,通常使用系统过程sp_settriggerorder 来完成此任务。
<2>INSTEAD OF触发器
INSTEAD OF 触发器表示并不执行其所定义的操作(INSERT、 UPDATE、 DELETE),而仅是执行触发器本身。既可在表上定义INSTEAD OF 触发器,也可以在视图上定义INSTEAD OF 触发器,但对同一操作只能定义一个INSTEAD OF 触发器。
<3>异同点
<3.1>After触发器只能用于数据表中,Instead Of触发器可以用于数据表和视图上,但两种触发器都不可以建立在临时表上。
<3.2>一个数据表可以有多个触发器,但是一个触发器只能对应一个表。
<3.3>在同一个数据表中,对每个操作(如Insert、Update、Delete)而言可以建立许多个After触发器,但Instead Of触发器针对每个操作只有建立一个。
<3.4>如果针对某个操作即设置了After触发器又设置了Instead Of触发器,那么Instead of触发器一定会激活,而After触发器就不一定会激活了。