引用元
DML トリガーで inserted と deleted テーブルを使用して、変更を検査する方法について学習します。 - SQL Server | Microsoft Learn
inserted テーブルには、INSERT または UPDATE ステートメントの後に、新しいまたは変更された行のコピーが格納されます。
deleted テーブルには、DELETE または UPDATE ステートメントによって変更される前に、影響を受ける行のコピーがトリガー テーブルに格納されます。
要約
INSERT → 新レコード = inserted のみ存在する
UPDATE → 新レコード = inserted と 旧レコード = deleted の両方が存在する
DELETE → 旧レコード = deleted のみ存在する
SQL例
CREATE TRIGGER tr_UserMaster_History ON UserMaster FOR INSERT,UPDATE, DELETE AS BEGIN DECLARE @statement nvarchar(6) IF NOT EXISTS(SELECT 1 FROM inserted) SET @statement = 'Delete' ELSE IF NOT EXISTS(SELECT 1 FROM deleted) SET @statement = 'Insert' ELSE SET @statement = 'Update' -- Add Log Record and set @statement -- END