good-arrow’s blog

https://good-arrow.net/

トリガーで追加・更新・削除のステータスを記録する

引用元

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