数据库之触发器
??????? 觸發(fā)器——看到這個(gè)名字總是會(huì)想到數(shù)電中學(xué)過(guò)的觸發(fā)器,有輸入端和輸出端,根據(jù)電平的高低來(lái)觸發(fā)。
數(shù)據(jù)庫(kù)中的觸發(fā)器是個(gè)特殊的存儲(chǔ)過(guò)程,主要是通過(guò)事件進(jìn)行觸發(fā)而被執(zhí)行的,而存儲(chǔ)過(guò)程可以通過(guò)存儲(chǔ)過(guò)程名稱而被直接調(diào)用。
?
??????? 作用:使用T——SQL語(yǔ)句進(jìn)行復(fù)雜的邏輯處理,基于一個(gè)表創(chuàng)建,但是可以對(duì)多個(gè)表進(jìn)行操作,因此常常用于復(fù)雜的業(yè)務(wù)規(guī)則。可以完成如下功能:
1 、級(jí)聯(lián)修改數(shù)據(jù)庫(kù)中相關(guān)的表
2、執(zhí)行比核查約束更為復(fù)雜的約束操作
3、拒絕或回滾違反引用完整性的操作。
4、比較表修改前后數(shù)據(jù)之間的差別,并根據(jù)差別采取相應(yīng)的操作。
?
創(chuàng)建觸發(fā)器的規(guī)則和限制:
?1、Create Trigger語(yǔ)句必須是批處理中的第一個(gè)語(yǔ)句。
2、在默認(rèn)情況下,創(chuàng)建觸發(fā)器的權(quán)限將分配給數(shù)據(jù)表的所有者,且不能轉(zhuǎn)給其他用戶
3、觸發(fā)器是數(shù)據(jù)庫(kù)對(duì)象,其名稱必須遵循標(biāo)識(shí)符的命名規(guī)則。
4、雖然觸發(fā)器可以引用當(dāng)前數(shù)據(jù)庫(kù)以外的對(duì)象,但是只能在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建觸發(fā)器。
5、雖然不能在臨時(shí)數(shù)據(jù)表上創(chuàng)建觸發(fā)器,但是觸發(fā)器可以引用臨時(shí)數(shù)據(jù)表。
6、不能在系統(tǒng)數(shù)據(jù)表創(chuàng)建觸發(fā)器,也不可以引用系統(tǒng)數(shù)據(jù)庫(kù)。
7、在包含使用delete或updata操作定義中,不能定義instead of和instead of update觸發(fā)器。
8、TRUNCATE TABLE語(yǔ)句不會(huì)引發(fā)Delete觸發(fā)器,因?yàn)樵撜Z(yǔ)句沒(méi)有被記入日志。
9、Writetext語(yǔ)句不會(huì)引發(fā)insert或update觸發(fā)器
注意:當(dāng)創(chuàng)建一個(gè)觸發(fā)器時(shí)必須指定:名稱;在其上定義觸發(fā)器的表;觸發(fā)器將何時(shí)激發(fā);激活觸發(fā)器的數(shù)據(jù)修改語(yǔ)句。
??????
?????? 管理觸發(fā)器有兩種方法:一是使用企業(yè)管理器管理觸發(fā)器;二是使用T——SQL管理觸發(fā)器。都可以對(duì)觸發(fā)器進(jìn)行創(chuàng)建,修改,刪除。
????????使用T——SQL查看觸發(fā)器相關(guān)數(shù)據(jù):使用系統(tǒng)存儲(chǔ)過(guò)程sp_helptrigger:語(yǔ)法如下:exec sp_helptrigger‘table’[,'type']
table:觸發(fā)器所在的表名
type:指定列出的操作類型的觸發(fā)器。若不指定,則列出所有的觸發(fā)器。
例子:exec sp_helptrigger'employee'
總結(jié)
- 上一篇: mysql数据库的备份与还原
- 下一篇: iphone 虚拟机Mac系统中VMwa