數據庫之觸發(fā)器
觸發(fā)器——看到這個名字總是會想到數電中學過的觸發(fā)器,有輸入端和輸出端,根據電平的高低來觸發(fā)。
數據庫中的觸發(fā)器是個特殊的存儲過程,主要是通過事件進行觸發(fā)而被執(zhí)行的,而存儲過程可以通過存儲過程名稱而被直接調用。
作用:使用T——SQL語句進行復雜的邏輯處理,基于一個表創(chuàng)建,但是可以對多個表進行操作,因此常常用于復雜的業(yè)務規(guī)則。可以完成如下功能:
1 、級聯修改數據庫中相關的表
2、執(zhí)行比核查約束更為復雜的約束操作
3、拒絕或回滾違反引用完整性的操作。
4、比較表修改前后數據之間的差別,并根據差別采取相應的操作。
創(chuàng)建觸發(fā)器的規(guī)則和限制:
1、Create Trigger語句必須是批處理中的第一個語句。
2、在默認情況下,創(chuàng)建觸發(fā)器的權限將分配給數據表的所有者,且不能轉給其他用戶
3、觸發(fā)器是數據庫對象,其名稱必須遵循標識符的命名規(guī)則。
4、雖然觸發(fā)器可以引用當前數據庫以外的對象,但是只能在當前數據庫中創(chuàng)建觸發(fā)器。
5、雖然不能在臨時數據表上創(chuàng)建觸發(fā)器,但是觸發(fā)器可以引用臨時數據表。
6、不能在系統(tǒng)數據表創(chuàng)建觸發(fā)器,也不可以引用系統(tǒng)數據庫。
7、在包含使用delete或updata操作定義中,不能定義instead of和instead of update觸發(fā)器。
8、TRUNCATE TABLE語句不會引發(fā)Delete觸發(fā)器,因為該語句沒有被記入日志。
9、Writetext語句不會引發(fā)insert或update觸發(fā)器
注意:當創(chuàng)建一個觸發(fā)器時必須指定:名稱;在其上定義觸發(fā)器的表;觸發(fā)器將何時激發(fā);激活觸發(fā)器的數據修改語句。
管理觸發(fā)器有兩種方法:一是使用企業(yè)管理器管理觸發(fā)器;二是使用T——SQL管理觸發(fā)器。都可以對觸發(fā)器進行創(chuàng)建,修改,刪除。
使用T——SQL查看觸發(fā)器相關數據:使用系統(tǒng)存儲過程sp_helptrigger:語法如下:exec sp_helptrigger‘table’[,'type']
table:觸發(fā)器所在的表名
type:指定列出的操作類型的觸發(fā)器。若不指定,則列出所有的觸發(fā)器。
例子:exec sp_helptrigger'employee'
posted on 2012-07-03 10:01 順其自然EVO 閱讀(221) 評論(0) 編輯 收藏 所屬分類: 數據庫