特殊的預存程序-觸發器概述

來源:互聯網
上載者:User

本節將介紹一種特殊的預存程序,即觸發器。

一、觸發器的概念
觸發器是一種特殊類型的預存程序,它不同於我們前面介紹過的預存程序。觸發器主要是通過事件進行觸發而被執行的,而預存程序可以通過預存程序名字而被直接調用。當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,SQL Server就會自動執行觸發器所定義的SQL語句,從而確保對資料的處理必須符合由這些SQL 語句所定義的規則。 

二、觸發器的作用
觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的複雜的參照完整性和資料的一致性。除此之外,觸發器還有其它許多不同的功能: 

A.強化約束
觸發器能夠實現比CHECK 語句更為複雜的約束。 

B.跟蹤變化
觸發器可以偵測資料庫內的操作從而不允許資料庫中未經許可的指定更新和變化。 

C.級聯運行
觸發器可以偵測資料庫內的操作,並自動地級聯影響整個資料庫的各項內容。例如:某個表上的觸發器中包含有對另外一個表的資料操作(如刪除,更新,插入),而該操作又導致該表上觸發器被觸發。 

D.預存程序的調用

為了響應資料庫更新,觸發器可以調用一個或多個預存程序,甚至可以通過外部過程的調用而在DBMS本身之外進行操作。

由此可見,觸發器可以解決進階形式的商務規則或複雜行為限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在資料修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外一個表的同一類型(INSERT、UPDATE、DELETE)的多個觸發器能夠對同一種資料操作採取多種不同的處理。

總體而言,觸發器效能通常比較低。  

三、觸發器的種類
SQL Server 2000支援兩種類型的觸發器:AFTER觸發器和INSTEAD OF觸發器。

AFTER觸發器要求只有執行某一操作(INSERT、UPDATE、DELETE)之後,觸發器才被觸發,且只能在表上定義。可以為針對錶的同一操作定義多個觸發器。

INSTEAD OF觸發器表示並不執行其所定義的操作(INSERT、UPDATE、DELETE),而僅是執行觸發器本身。既可在表上定義INSTEAD OF觸發器,也可以在視圖上定義INSTEAD OF觸發器,但對同一操作只能定義一個INSTEAD OF觸發器。

註:在本實驗中不講INSTEAD OF觸發器

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.