佐々木屋

技術的なことから趣味まで色々書きます

トリガーの登録

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テーブルにキーが無く、更新テーブルにもキーが無い場合は、実テーブルの意図しない行が更新されてしまう可能性がありますので注意が必要ということになります。


なお、設定はテーブルの「トリガー」に格納されます。
f:id:sasaki816:20191002131330j:plain