陳雅
摘要:觸發(fā)器是SQLServer數(shù)據(jù)庫中用于保證數(shù)據(jù)完整性的一種重要工具,起著舉足輕重的作用。文章介紹了觸發(fā)器的概念、組成、分類、創(chuàng)建方法及優(yōu)點等內(nèi)容。重點通過實例討論了三種觸發(fā)器的創(chuàng)建方法。正確、合理地使用觸發(fā)器,不僅可以增強數(shù)據(jù)庫完整性而且可以提高開發(fā)效率。
關(guān)鍵詞:觸發(fā)器;SQL Server
信息系統(tǒng)在實施過程中,會把所有的信息儲存在數(shù)據(jù)庫中,因此開發(fā)和運行信息系統(tǒng)始終都離不開數(shù)據(jù)庫,且信息系統(tǒng)的可用性與其存取數(shù)據(jù)是否正確有很大的關(guān)系。運用觸發(fā)器可以允許或限制對表的修改、強制數(shù)據(jù)滿足完整性、允許或限制自動派生列、提供日志作為主要的記錄和審核。為了預(yù)防一些無效內(nèi)容記錄在內(nèi),應(yīng)該啟動復(fù)雜業(yè)務(wù)邏輯,啟動觸發(fā)技術(shù)并應(yīng)用在數(shù)據(jù)庫系統(tǒng)中。深入研究觸發(fā)器技術(shù),將其應(yīng)用在數(shù)據(jù)庫系統(tǒng)當(dāng)中,對于提高信息的準(zhǔn)確性和完整性、提高開發(fā)效率等方面具有重要意義。本文基于SQL Server數(shù)據(jù)庫的觸發(fā)器進行應(yīng)用研究。
1觸發(fā)器的概念
觸發(fā)器(Triggcr)在很多機器中只代表了一個儲存的過程,一旦數(shù)據(jù)中發(fā)生某種數(shù)據(jù)庫操作事件時由數(shù)據(jù)庫系統(tǒng)自動觸發(fā),通常用于加強數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。
觸發(fā)器與數(shù)據(jù)庫對象緊密相連,不能被直接調(diào)用,而是通過事件(如插入、刪除、更新、創(chuàng)建等)自動觸發(fā)、執(zhí)行。一旦數(shù)據(jù)庫對象的結(jié)構(gòu)或者數(shù)據(jù)出現(xiàn)了新的變化,那么自動執(zhí)行檢查過程中會考慮整個過程中是否能夠滿足觸發(fā)器的需求,對創(chuàng)建觸發(fā)器創(chuàng)造數(shù)據(jù)沒有任何控制效果。
2觸發(fā)器的組成
一般觸發(fā)器時間主要包括三部分,主要包括事件、條件以及動作三個部分。一旦具備的相關(guān)條件發(fā)生之后,會立即執(zhí)行事件。引起觸發(fā)器被觸發(fā)的事件有DML語句、DDL語句、數(shù)據(jù)庫系統(tǒng)事件、用戶事件。條件是按照邏輯思維進行表達(dá)的邏輯表達(dá)式,如果該表達(dá)式值達(dá)到TRUE時,會自動執(zhí)行觸發(fā)器,讓其執(zhí)行相關(guān)觸發(fā)事件。
3觸發(fā)器的分類
根據(jù)不同的分類方法,觸發(fā)器被分為不同的類別。按照觸發(fā)事件的不同,觸發(fā)器分為DML觸發(fā)器、DDL觸發(fā)器和登錄觸發(fā)器3種;根據(jù)觸發(fā)器的觸發(fā)時間的不同,觸發(fā)器又分為IN.STEAD OF觸發(fā)器和AFTER(FOR)觸發(fā)器兩種,INSTEAD OF觸發(fā)器的動作要早于表的約束(如primarykey約束、foreignkey約束,check約束等)處理,AFTER觸發(fā)器的動作晚于約束(如primary key約束、foreign key約束,check約束等)處理。每一個表上只能創(chuàng)建一個INSTEAD OF觸發(fā)器,但可以創(chuàng)建多個AFTER(FOR)觸發(fā)器。
3.1 DML觸發(fā)器
DML觸發(fā)器在執(zhí)行DML語言時被觸發(fā),用于當(dāng)數(shù)據(jù)被更新時強制執(zhí)行完整性檢查.DML事件包括對指定表或視圖進行的INSERT語句、DELETE語句和UPDA了E語句。
3.2 DDL觸發(fā)器
DDL觸發(fā)器用于響應(yīng)CREATE、ALTER、DROP、GRANT、DENY、REVOKE和UPDATE STATISTICS及執(zhí)行管理責(zé)任.一旦數(shù)據(jù)庫中結(jié)構(gòu)出現(xiàn)了新的變化,很容易激發(fā)DDL觸發(fā)器,觸發(fā)器可以記錄結(jié)構(gòu)修改的過程,監(jiān)測對數(shù)據(jù)庫架構(gòu)的操作,防止對數(shù)據(jù)庫架構(gòu)進行某些修改;DDL觸發(fā)器能夠刪除指定關(guān)系或者用戶關(guān)系。DDL觸發(fā)器只能作為AFTER(FOR)觸發(fā)器使用。
3.3登錄觸發(fā)器
登錄觸發(fā)器在登錄的身份驗證階段完成之后且用戶會話實際建立之前激發(fā),是用于響應(yīng)LOGIN事件的觸發(fā)器。