Microsoft SQL Server
引き金
サーチ…
前書き
トリガーは、特殊なタイプのストアード・プロシージャーで、イベントが発生した後に自動的に実行されます。トリガには、データ定義言語トリガとデータ操作言語トリガの2種類があります。
通常はテーブルにバインドされ、自動的に起動します。明示的にトリガーを呼び出すことはできません。
トリガーの種類と分類
SQL Serverには、DDLトリガとDMLトリガの2つのカテゴリがあります。
DDLトリガーは、データ定義言語(DDL)イベントに応答して起動されます。これらのイベントは、主にキーワードCREATE
、 ALTER
、およびDROP
で始まるTransact-SQLステートメントに対応しています。
DMLトリガーは、データ操作言語(DML)イベントに応答して起動されます。これらのイベントは、キーワードINSERT
、 UPDATE
、およびDELETE
で始まるTransact-SQLステートメントに対応しています。
DMLトリガは2つの主なタイプに分類されます。
トリガーの後(トリガーの場合)
- AFTER INSERTトリガー。
- AFTER UPDATEトリガー。
- AFTER DELETEトリガー。
トリガーの代わりに
- INSTEAD OF INSERTトリガー。
- INSTEAD OF UPDATEトリガー。
- INSTEAD OF DELETEトリガー。
DMLトリガー
DMLトリガーは、dmlステートメント( insert
、 update
または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にレコードを追加します。