在本章第五节我们已经指出sql server 2000 支持after 和instead of 两种类型的触发器。其中instead of 触发器是sql server 2000 的新添加的功能,after 触发器等同于以前版本中的触发器。当为表或视图定义了针对某一操作(insert、 delete、 update) 的instead of 类型触发器且执行了相应的操作时,尽管触发器被触发,但相应的操作并不被执行,而运行的仅是触发器sql 语句本身。
instead of 触发器的主要优点是使不可被修改的视图芄恢с中薷摹f渲械湫偷睦? 子是分割视图(partitioned view)。为了提高查询性能,分割视图通常是一个来自多个表的结果集,但是也正因此而不支持视图更新。下面的例子说明了如何使用instead of触发器来支持对分割视图所引用的基本表的修改。
此时能够成功执行插入语句 insert into saleview values (‘jul001’,’先科vcd’,200)。 instead of 触发器的另外的优点是,通过使用逻辑语句以执行批处理的某一部分而放弃执行其余部分。比如,可以定义触发器在遇到某一错误时,转而执行触发器的另外部分。