テーブルAと呼ばれるテーブルがあり、INSERT、UPDATES、DELETESを処理するトリガを作成しました。ここで私の次のステップを処理するために、どのようなDMLアクションが行われたのかを知りたいと思います。更新/挿入/削除が行われたかどうかをどのように知るのですか?更新/挿入/削除がテーブル上で行われたかどうかを知る方法
あなたのご意見、ご感想は大歓迎です!
テーブルAと呼ばれるテーブルがあり、INSERT、UPDATES、DELETESを処理するトリガを作成しました。ここで私の次のステップを処理するために、どのようなDMLアクションが行われたのかを知りたいと思います。更新/挿入/削除が行われたかどうかをどのように知るのですか?更新/挿入/削除がテーブル上で行われたかどうかを知る方法
あなたのご意見、ご感想は大歓迎です!
トリガーの内側には、INSERTED
とDELETED
の2つの特別なテーブルがあります。行がINSERTED
表にのみ存在する場合は、INSERT操作が発生しました。同様に、行がDELETED
表にのみ存在する場合は、DELETE操作が発生しました。行が両方の表に存在する場合、UPDATEが発生し、INSERTED
表は新しい値を保持し、一方DELETED
表は古い値を保持します。
挿入された行:
SELECT i.*
FROM INSERTED i
LEFT JOIN DELETED d
ON i.PrimaryKey = d.PrimaryKey
WHERE d.PrimaryKey IS NULL
削除された行:
SELECT d.*
FROM DELETED d
LEFT JOIN INSERTED i
ON d.PrimaryKey = i.PrimaryKey
WHERE i.PrimaryKey IS NULL
更新された行:
SELECT *
FROM INSERTED i
INNER JOIN DELETED d
ON i.PrimaryKey = d.PrimaryKey
それとも、可能な解決策だすべてのイベント – Magnus
に1つのトリガーを作成します。私は一度にすべてをやり遂げることができる場所があるのだろうかと思っていました。ベストプラクティスは何ですか? – SaiBand