特殊的存儲過程-觸發(fā)器概述
更新時間:2008年04月18日 10:50:21 作者:
一直都不知道觸發(fā)器的具體應用,今天看到一篇觸發(fā)器的解釋文章
本節(jié)將介紹一種特殊的存儲過程,即觸發(fā)器。
一、觸發(fā)器的概念
觸發(fā)器是一種特殊類型的存儲過程,它不同于我們前面介紹過的存儲過程。觸發(fā)器主要是通過事件進行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,SQL Server就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規(guī)則。
二、觸發(fā)器的作用
觸發(fā)器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發(fā)器還有其它許多不同的功能:
A.強化約束
觸發(fā)器能夠實現比CHECK 語句更為復雜的約束。
B.跟蹤變化
觸發(fā)器可以偵測數據庫內的操作從而不允許數據庫中未經許可的指定更新和變化。
C.級聯運行
觸發(fā)器可以偵測數據庫內的操作,并自動地級聯影響整個數據庫的各項內容。例如:某個表上的觸發(fā)器中包含有對另外一個表的數據操作(如刪除,更新,插入),而該操作又導致該表上觸發(fā)器被觸發(fā)。
D.存儲過程的調用
為了響應數據庫更新,觸發(fā)器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在DBMS本身之外進行操作。
由此可見,觸發(fā)器可以解決高級形式的業(yè)務規(guī)則或復雜行為限制以及實現定制記錄等一些方面的問題。例如,觸發(fā)器能夠找出某一表在數據修改前后狀態(tài)發(fā)生的差異,并根據這種差異執(zhí)行一定的處理。此外一個表的同一類型(INSERT、UPDATE、DELETE)的多個觸發(fā)器能夠對同一種數據操作采取多種不同的處理。
總體而言,觸發(fā)器性能通常比較低。
三、觸發(fā)器的種類
SQL Server 2000支持兩種類型的觸發(fā)器:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。
AFTER觸發(fā)器要求只有執(zhí)行某一操作(INSERT、UPDATE、DELETE)之后,觸發(fā)器才被觸發(fā),且只能在表上定義。可以為針對表的同一操作定義多個觸發(fā)器。
INSTEAD OF觸發(fā)器表示并不執(zhí)行其所定義的操作(INSERT、UPDATE、DELETE),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEAD OF觸發(fā)器,也可以在視圖上定義INSTEAD OF觸發(fā)器,但對同一操作只能定義一個INSTEAD OF觸發(fā)器。
注:在本實驗中不講INSTEAD OF觸發(fā)器
一、觸發(fā)器的概念
觸發(fā)器是一種特殊類型的存儲過程,它不同于我們前面介紹過的存儲過程。觸發(fā)器主要是通過事件進行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如UPDATE、INSERT、DELETE這些操作時,SQL Server就會自動執(zhí)行觸發(fā)器所定義的SQL語句,從而確保對數據的處理必須符合由這些SQL 語句所定義的規(guī)則。
二、觸發(fā)器的作用
觸發(fā)器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的復雜的參照完整性和數據的一致性。除此之外,觸發(fā)器還有其它許多不同的功能:
A.強化約束
觸發(fā)器能夠實現比CHECK 語句更為復雜的約束。
B.跟蹤變化
觸發(fā)器可以偵測數據庫內的操作從而不允許數據庫中未經許可的指定更新和變化。
C.級聯運行
觸發(fā)器可以偵測數據庫內的操作,并自動地級聯影響整個數據庫的各項內容。例如:某個表上的觸發(fā)器中包含有對另外一個表的數據操作(如刪除,更新,插入),而該操作又導致該表上觸發(fā)器被觸發(fā)。
D.存儲過程的調用
為了響應數據庫更新,觸發(fā)器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在DBMS本身之外進行操作。
由此可見,觸發(fā)器可以解決高級形式的業(yè)務規(guī)則或復雜行為限制以及實現定制記錄等一些方面的問題。例如,觸發(fā)器能夠找出某一表在數據修改前后狀態(tài)發(fā)生的差異,并根據這種差異執(zhí)行一定的處理。此外一個表的同一類型(INSERT、UPDATE、DELETE)的多個觸發(fā)器能夠對同一種數據操作采取多種不同的處理。
總體而言,觸發(fā)器性能通常比較低。
三、觸發(fā)器的種類
SQL Server 2000支持兩種類型的觸發(fā)器:AFTER觸發(fā)器和INSTEAD OF觸發(fā)器。
AFTER觸發(fā)器要求只有執(zhí)行某一操作(INSERT、UPDATE、DELETE)之后,觸發(fā)器才被觸發(fā),且只能在表上定義。可以為針對表的同一操作定義多個觸發(fā)器。
INSTEAD OF觸發(fā)器表示并不執(zhí)行其所定義的操作(INSERT、UPDATE、DELETE),而僅是執(zhí)行觸發(fā)器本身。既可在表上定義INSTEAD OF觸發(fā)器,也可以在視圖上定義INSTEAD OF觸發(fā)器,但對同一操作只能定義一個INSTEAD OF觸發(fā)器。
注:在本實驗中不講INSTEAD OF觸發(fā)器
相關文章
Linux下mysql數據庫的創(chuàng)建導入導出 及一些基本指令
這篇文章主要介紹了Linux數據庫的創(chuàng)建 導入導出 以及一些基本指令,需要的朋友可以參考下2019-08-08sql學習之CASE WHEN THEN ELSE END的用法
這篇文章主要介紹了sql學習之CASE WHEN THEN ELSE END的用法,需要的朋友可以參考下2014-06-06