MW211 EXIT

devlog
MSSQL/特定の列が更新されたか
2014年11月07日
トリガにて、特定の列が更新された場合に発動するように判定するには
「UPDATE()」を使う。
┌──────────────────────────────────────┐
│CREATE TRIGGER [dbo].[トリガ] ON [データベース].[dbo].[テーブル]            │
│    AFTER UPDATE                                                            │
│AS                                                                          │
│BEGIN                                                                       │
│    IF UPDATE([列])                                                         │
│    BEGIN                                                                   │
│        SQL文;                                                              │
│    END;                                                                    │
│END;                                                                        │
└──────────────────────────────────────┘
但し、これは、その列がUPDATE文の対象だった場合に漏れなく発動し
内容に変化があったか否かは気にしない(同じ値で更新しても発動する)。

ということで、内容が変更された場合に限定するのは以下のような感じとなる。
┌──────────────────────────────────────┐
│CREATE TRIGGER [dbo].[トリガ] ON [データベース].[dbo].[テーブル]            │
│    AFTER UPDATE                                                            │
│AS                                                                          │
│BEGIN                                                                       │
│    IF (SELECT [列] FROM inserted) <> (SELECT [列] FROM deleted)            │
│    BEGIN                                                                   │
│        SQL文;                                                              │
│    END;                                                                    │
│END;                                                                        │
└──────────────────────────────────────┘
分類:MSSQL