サーチ…


前書き

トリガーは、特殊なタイプのストアード・プロシージャーで、イベントが発生した後に自動的に実行されます。トリガには、データ定義言語トリガとデータ操作言語トリガの2種類があります。

通常はテーブルにバインドされ、自動的に起動します。明示的にトリガーを呼び出すことはできません。

トリガーの種類と分類

SQL Serverには、DDLトリガとDMLトリガの2つのカテゴリがあります。

DDLトリガーは、データ定義言語(DDL)イベントに応答して起動されます。これらのイベントは、主にキーワードCREATEALTER 、およびDROPで始まるTransact-SQLステートメントに対応しています。

DMLトリガーは、データ操作言語(DML)イベントに応答して起動されます。これらのイベントは、キーワードINSERTUPDATE 、およびDELETEで始まるTransact-SQLステートメントに対応しています。

DMLトリガは2つの主なタイプに分類されます。

  1. トリガーの後(トリガーの場合)

    • AFTER INSERTトリガー。
    • AFTER UPDATEトリガー。
    • AFTER DELETEトリガー。
  2. トリガーの代わりに

    • INSTEAD OF INSERTトリガー。
    • INSTEAD OF UPDATEトリガー。
    • INSTEAD OF DELETEトリガー。

DMLトリガー

DMLトリガーは、dmlステートメント( insertupdateまたはdelete )に対する応答として起動されます。
単一の表またはビューの1つ以上のdmlイベントに対処するためにdmlトリガーを作成できます。これは、単一のdmlトリガーが特定のテーブルまたはビューからのレコードの挿入、更新、および削除を処理できますが、その単一のテーブルまたはビューで変更されたデータのみを処理できることを意味します。

DMLトリガーは、 inserted deletedテーブルとdeletedテーブルへのアクセスを提供します。このテーブルには、トリガを起動した挿入文、更新文または削除文の影響を受けたデータに関する情報が格納deletedます。

DMLトリガー文ベース、行ベースではないことに注意してください 。つまり、文が1つ以上の行に影響する場合、挿入された表または削除された表には1つ以上の行が含まれます。

例:

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR INSERT
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Inserted'
    FROM Inserted

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR UPDATE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Updated'
    FROM Inserted 

GO

CREATE TRIGGER tblSomething_InsertOrUpdate ON tblSomething  
FOR DELETE
AS

    INSERT INTO tblAudit (TableName, RecordId, Action)
    SELECT 'tblSomething', Id, 'Deleted'
    FROM Deleted

GO

上記のすべての例は、レコードがtblSomethingで追加、削除、または更新されるたびにtblAuditにレコードを追加します。



Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow