觸發器複習

在進行數據庫應用軟件的開發時,我們有時會碰到表中的某些數據改變,希望同時引起其他相關數據改變的需求,利用觸發器就能滿足這樣的需求。它能在表中的某些特定數據變化時自動完成某些查詢。運用觸發器不僅可以簡化程序,而且可以增加程序的靈活性。下面就對觸發器的基本概念、它的應用場合進行一下簡單的敘述。

什麼是觸發器

觸發器是一種特殊類型的存儲過程,它不由用戶直接調用,被定義爲在對錶或視圖發出 UPDATE、INSERT 或 DELETE 語句時自動執行。觸發器可以查詢其他表,而且可以包含複雜的SQL語句。它們主要用於強制複雜的業務規則或要求。

觸發器還有助於強制引用完整性,以便在添加、更新或刪除表中的行時保留表之間數據的關係。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵約束。

       觸發器的主要作用就是其能夠實現由主鍵和外鍵所不能保證的複雜的參照完整性和數據的一致性。除此之外,觸發器還有其它許多不同的功能:
(1) 強化約束(Enforce restriction)
觸發器能夠實現比CHECK 語句更爲複雜的約束。

(2) 跟蹤變化Auditing changes
觸發器可以偵測數據庫內的操作,從而不允許數據庫中未經許可的指定更新和變化。

(3) 級聯運行(Cascaded operation)。
觸發器可以偵測數據庫內的操作,並自動地級聯影響整個數據庫的各項內容。例如,某個表上的觸發器中包含有對另外一個表的數據操作(如刪除,更新,插入)而該操作又導致該表上觸發器被觸發。

(4) 存儲過程的調用(Stored procedure invocation)。
爲了響應數據庫更新觸,發器可以調用一個或多個存儲過程,甚至可以通過外部過程的調用而在DBMS( 數據庫管理系統)本身之外進行操作。
    由此可見,觸發器可以解決高級形式的業務規則或複雜行爲限制以及實現定製記錄等一些方面的問題。例如,觸發器能夠找出某一表在數據修改前後狀態發生的差異,並根據這種差異執行一定的處理。此外一個表的同一類型(INSERT、 UPDATE、 DELETE)的多個觸發器能夠對同一種數據操作採取多種不同的處理。
    總體而言,觸發器性能通常比較低。當運行觸發器時,系統處理的大部分時間花費在參照其它表的這一處理上,因爲這些表既不在內存中也不在數據庫設備上,而刪除表和插入表總是位於內存中。可見觸發器所參照的其它表的位置決定了操作要花費的時間長短。

觸發器可以擴展對錶的約束、默認值和規則的完整性檢查,但只要約束和默認值提供了全部所需的功能,就應使用約束和默認值。

應用場合

觸發器的主要應用場合概括起來講有以下幾種:

1.當向一張表中添加或刪除記錄時,需要在相關表中進行同步操作。比如,當爲應用系統添加一個系統用戶時,需要同時向權限表中添加該用戶的缺省權限,此時就編寫系統用戶表的觸發器在添加記錄動作時觸發。

2.當表上某列數據的值與其他表中的數據有聯繫時。比如,當某客戶進行欠款消費,可以在生成訂單時通過設計觸發器判斷該客戶的累計欠款是否超出了最大限度。

3.當需要對某張表進行跟蹤時。比如,當有新訂單產生時,需要及時通知相關人員進行處理,此時可以在訂單表上設計添加觸發器加以實現。

 

 

原地址連接:http://blog.csdn.net/vannly/archive/2006/05/30/763392.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章