在本章第五節(jié)我們已經(jīng)指出sql server 2000 支持after 和instead of 兩種類(lèi)型的觸發(fā)器。其中instead of 觸發(fā)器是sql server 2000 的新添加的功能,after 觸發(fā)器等同于以前版本中的觸發(fā)器。當(dāng)為表或視圖定義了針對(duì)某一操作(insert、 delete、 update) 的instead of 類(lèi)型觸發(fā)器且執(zhí)行了相應(yīng)的操作時(shí),盡管觸發(fā)器被觸發(fā),但相應(yīng)的操作并不被執(zhí)行,而運(yùn)行的僅是觸發(fā)器sql 語(yǔ)句本身。
instead of 觸發(fā)器的主要優(yōu)點(diǎn)是使不可被修改的視圖芄恢с中薷摹f渲械湫偷睦? 子是分割視圖(partitioned view)。為了提高查詢(xún)性能,分割視圖通常是一個(gè)來(lái)自多個(gè)表的結(jié)果集,但是也正因此而不支持視圖更新。下面的例子說(shuō)明了如何使用instead of觸發(fā)器來(lái)支持對(duì)分割視圖所引用的基本表的修改。
此時(shí)能夠成功執(zhí)行插入語(yǔ)句 insert into saleview values (‘jul001’,’先科vcd’,200)。 instead of 觸發(fā)器的另外的優(yōu)點(diǎn)是,通過(guò)使用邏輯語(yǔ)句以執(zhí)行批處理的某一部分而放棄執(zhí)行其余部分。比如,可以定義觸發(fā)器在遇到某一錯(cuò)誤時(shí),轉(zhuǎn)而執(zhí)行觸發(fā)器的另外部分。