程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 特殊的存儲過程-觸發器概述

特殊的存儲過程-觸發器概述

編輯:更多數據庫知識
本節將介紹一種特殊的存儲過程,即觸發器。

一、觸發器的概念
觸發器是一種特殊類型的存儲過程,它不同於我們前面介紹過的存儲過程。觸發器主要是通過事件進行觸發而被執行的,而存儲過程可以通過存儲過程名字而被直接調用。當對某一表進行諸如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觸發器

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved