Share via


瞭解 DML 觸發程序

Microsoft SQL Server 2005 提供兩種主要的機制來強制執行商務規則和資料完整性:條件約束和觸發程序。觸發程序是一種特殊的預存程序,它會在執行語言事件時自動生效。SQL Server 包含兩種一般的觸發程序:DML 觸發程序與 DDL 觸發程序。

DDL 觸發程序是 SQL Server 2005 中新增的功能。當伺服器或資料庫中發生資料定義語言 (DDL) 時,就會叫用這些觸發程序。如需詳細說明,請參閱<DDL 觸發程序>。

當資料庫中發生資料操作語言 (DML) 事件時,就會叫用 DML 觸發程序。DML 事件包括了在指定資料表或檢視中修改資料的 INSERT、UPDATE 或 DELETE 陳述式。DML 觸發程序可以查詢其他資料表,並且可以包含複雜的 Transact-SQL 陳述式。觸發程序和引發它的陳述式會被視為單一交易處理,而這樣的交易可以從觸發程序內部回復。如果偵測到伺服器錯誤 (例如,磁碟空間不足),整個交易就會自動回復。

DML 觸發程序有下列幾種用途:

  • 它們可以串聯資料庫中相關資料表的變更,不過,透過串聯的參考完整性條件約束來執行這些變更會更有效率。
  • 它們可以預防惡意或錯誤的 INSERT、UPDATE 和 DELETE 作業,並且強制執行其他比 CHECK 條件約束所定義的限制更複雜的限制。
    與 CHECK 條件約束不同的是,DML 觸發程序可以參考其他資料表中的資料行。例如,觸發程序可以使用其他資料表的 SELECT 來比較插入或更新的資料,以及執行其他動作,如修改資料或顯示使用者自訂錯誤訊息。
  • 它們可以評估資料修改前後的資料表狀態,並依據這些差異採取動作。
  • 資料表中相同類型 (INSERT、UPDATE 或 DELETE) 的多個 DML 觸發程序,允許對相同的修改陳述式執行多種不同的動作。

請參閱

概念

DML 觸發程序的類型
與條件約束比較的觸發程序
AdventureWorks 範例資料庫中的 DML 觸發程序

說明及資訊

取得 SQL Server 2005 協助