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

MS SQL Server 觸發器核心觀念:特殊預存程序、四大功能與兩種類型

     編輯:關於SqlServer

觸發器是特殊類型的預存程序,關鍵差異在於:

  • 預存程序:由名稱主動呼叫執行。
  • 觸發器:由事件自動觸發執行(INSERT/UPDATE/DELETE)。

12.5.1 觸發器的四大核心功能

  1. 強化約束:實現比 CHECK 更複雜的跨表、跨欄位業務規則。
  2. 稽核追蹤:偵測資料庫操作,阻擋未授權變更,記錄變更軌跡。
  3. 級聯操作:自動觸發跨表的連鎖 DML(如刪除主檔同步刪除明細),並可再觸發下一層觸發器。
  4. 呼叫預存程序/外部程式:回應資料變更啟動複雜流程,甚至跨越資料庫引擎呼叫外部元件。

此外,觸發器能比對資料修改前後狀態差異,據以執行處理;同一表同一操作類型可建立多個觸發器,實現多角度處理。

效能特性

觸發器效能通常較低,主要耗時在參考其他資料表的磁碟 I/O。inserted/deleted 駐留記憶體,但觸發器查詢的其他表通常不在記憶體。設計時應最小化跨表存取。

12.5.2 兩大觸發器類型

類型觸發時機建立對象同操作可建立數量順序控制
AFTERDML 完成後僅資料表多個sp_settriggerorder 指定 First/Last
INSTEAD OF取代 DML 動作資料表或視圖僅一個不適用(唯一)

選型指南

  • 需在視圖上支援 DML → INSTEAD OF。
  • 需在 DML 後執行稽核、級聯、通知 → AFTER。
  • 需攔截/轉換/驗證 DML 並決定是否執行 → INSTEAD OF。
  • 同表同操作邏輯單一 → INSTEAD OF;邏輯可模組化疊加 → AFTER 多觸發器。

總結

觸發器是資料庫層實作複雜業務規則、參照完整性與稽核的利器。理解兩大類型的觸發時機、建立限制與順序控制,能避免設計錯誤並發揮最大效用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved