在進行資料庫應用軟體的開發時,我們有時會碰到表中的某些資料改變,希望同時引起其他相關資料改變的需求,利用觸發器就能滿足這樣的需求。它能在表中的某些特定資料變化時自動完成某些查詢。運用觸發器不僅可以簡化程式,而且可以增加程式的靈活性。下面就對觸發器的基本概念、它的應用場合進行一下簡單的敘述。觸發器是一種特殊型別的儲存過程,它不由使用者直接呼叫,被定義為在對錶或檢視發出 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.當需要對某張表進行跟蹤時。比如,當有新訂單產生時,需要及時通知相關人員進行處理,此時可以在訂單表上設計新增觸發器加以實現。
資料庫中的觸發器
觸發器 其是一種特殊的儲存過程。一般的儲存過程是通過儲存過程名直接呼叫,而觸發器主要是 通過事件 增 刪 改 進行觸發而被執行的。其在表中資料發生變化時自動強制執行。常見的觸發器有兩種 after for instead of,用於insert update delete事件。after for 表...
資料庫中的觸發器
它的執行不是由程式呼叫,也不是手工啟動,而是由事件來觸發,比如 當對乙個表進行操作 insert,delete,update 時就會啟用它執行。觸發器經常用於加強資料的完整性約束和業務規則等。觸發器的型別 觸發器分為語句級觸發器和行級觸發器 for each row 1 語句級觸發器 是指在指定的操...
資料庫觸發器
觸發器是一種特殊型別的儲存過程,它不同於我們前面介紹過的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名字而 被直接呼叫。當對某一表進行諸如update insert delete 這些操作時,sql server 就會自動執行觸發器所定義的sql 語句,從而確保對資料...