トリガーの登録
SQLServerのトリガ登録の覚えです。
INSERTやUPDATEなどでテーブルに変更があった場合に処理を呼ぶ場合に使用するのが「トリガ」です。
トリガーはテーブルごとの設定になります。
CREATE TRIGGER [ トリガー名 ] ON [ 対象テーブル名 ] AFTER { [ INSERT] , [ UPDATE ] , [ DELETE ] } AS BEGIN [ 実行したいスクリプト ] END
例えば、テーブル更新時に登録日時を自動で入れたい場合などは以下のようにします。
CREATE TRIGGER [dbo].[trig_取引明細TEST] ON [dbo].[取引明細TEST] AFTER INSERT AS BEGIN UPDATE 取引明細EST SET 売上日 = getdate() WHERE 支店CD = (SELECT 支店CD FROM inserted) END
insertedテーブルにはINSERT、UPDATEステートメント実行で影響を受けた行がコピーされます。そこのキーを指定すれば実テーブルを更新できる、というわけです。
従って、insertedテーブルにキーが無く、更新テーブルにもキーが無い場合は、実テーブルの意図しない行が更新されてしまう可能性がありますので注意が必要ということになります。
なお、設定はテーブルの「トリガー」に格納されます。