前幾節介紹一般存儲過程(使用者自訂與系統存儲過程),本節介紹特殊存儲過程——**觸發器**。後續將詳細介紹觸發器概念、作用與使用方法,讓讀者掌握定義、建立與使用各種複雜度觸發器。
觸發器是特殊類型存儲過程,**不同於一般存儲過程可直接呼叫**。觸發器**透過事件觸發執行**。對表執行 UPDATE、INSERT、DELETE 時,SQL Server 自動執行觸發器定義的 SQL 語句,確保資料處理符合規則。
主要作用: 實現主鍵與外鍵無法保證的複雜參考完整性與資料一致性。其他功能:
CHECK 更複雜的約束觸發器可解決高階業務規則、複雜行為限制、客製化記錄等問題。例:找出表資料修改前後狀態差異並依差異處理。同表同類型(INSERT/UPDATE/DELETE)可建立多個觸發器對同操作採取不同處理。
效能考量: 觸發器效能通常較低。執行時大部分時間花費在參照其他表(不在記憶體也非資料庫裝置上),而 deleted/inserted 表永在記憶體中。參照表位置決定操作耗時長短。
SQL Server 2000 支援:
sp_settriggerorder 定義最先/最後觸發順序