首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 觸發器核心概念與兩大類型解析:AFTER 與 INSTEAD OF 觸發器機制差異完整對比

     編輯:關於SqlServer

前幾節介紹一般存儲過程(使用者自訂與系統存儲過程),本節介紹特殊存儲過程——**觸發器**。後續將詳細介紹觸發器概念、作用與使用方法,讓讀者掌握定義、建立與使用各種複雜度觸發器。

12.5.1 觸發器概念與四大核心作用

觸發器是特殊類型存儲過程,**不同於一般存儲過程可直接呼叫**。觸發器**透過事件觸發執行**。對表執行 UPDATE、INSERT、DELETE 時,SQL Server 自動執行觸發器定義的 SQL 語句,確保資料處理符合規則。

主要作用: 實現主鍵與外鍵無法保證的複雜參考完整性與資料一致性。其他功能:

  1. 強化約束:實現比 CHECK 更複雜的約束
  2. 追蹤變化:偵測資料庫操作,阻止未經許可的指定更新與變更
  3. 級聯運作:偵測操作並自動級聯影響整個資料庫。例:表觸發器含其他表資料操作(刪除/更新/插入),導致該表觸發器被觸發
  4. 存儲過程呼叫:響應資料庫更新,觸發器可呼叫一或多個存儲過程,甚至透過外部程序呼叫在 DBMS 外部操作

觸發器可解決高階業務規則、複雜行為限制、客製化記錄等問題。例:找出表資料修改前後狀態差異並依差異處理。同表同類型(INSERT/UPDATE/DELETE)可建立多個觸發器對同操作採取不同處理。

效能考量: 觸發器效能通常較低。執行時大部分時間花費在參照其他表(不在記憶體也非資料庫裝置上),而 deleted/inserted 表永在記憶體中。參照表位置決定操作耗時長短。

12.5.2 兩大觸發器類型

SQL Server 2000 支援:

  • AFTER 觸發器:等同 SQL Server 2000 前版本觸發器。**要求操作執行後才觸發**,**僅能在表上定義**。同一操作可定義多個觸發器。可用系統程序 sp_settriggerorder 定義最先/最後觸發順序
  • INSTEAD OF 觸發器:**不執行定義操作,僅執行觸發器本身**。**可在表或視圖上定義**,但**同一操作僅能定義一個 INSTEAD OF 觸發器**
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved