MW211 EXIT

devlog
MSSQL/自然キーによる復活のトリガ
2014年10月24日
レコードを追加した時、削除レコード(削除済フラグがONのレコード)に
(自然キー基準で)該当するものがある場合に復活させるトリガは以下のような感じ。
┌──────────────────────────────────────┐
│CREATE TRIGGER [dbo].[トリガ] ON [QC工程表DB].[dbo].[表]                    │
│    INSTEAD OF INSERT                                                       │
│AS                                                                          │
│    MERGE INTO [QC工程表DB].[dbo].[表] AS [旧表]                            │
│        USING inserted AS [新表]                                            │
│        ON (                                                                │
│                [新表].[自然キー1] = [旧表].[自然キー1],                    │
│            AND [新表].[自然キー2] = [旧表].[自然キー2]                     │
│        )                                                                   │
│        WHEN MATCHED THEN                                                   │
│            UPDATE SET [列]           = [新].[列],                          │
│                       [削除済フラグ] = 0                                   │
│        WHEN NOT MATCHED THEN                                               │
│            INSERT (                                                        │
│                    [サロゲートキー],                                       │
│                    [自然キー1],                                            │
│                    [自然キー2],                                            │
│                    [列],                                                   │
│                    [削除済フラグ]                                          │
│                )                                                           │
│                VALUES (                                                    │
│                    (自動採番),                                             │
│                    [新].[自然キー1],                                       │
│                    [新].[自然キー2],                                       │
│                    [新].[列],                                              │
│                    [新].[削除済フラグ]                                     │
│                )                                                           │
│;                                                                           │
└──────────────────────────────────────┘
分類:MSSQL