MW211 EXIT

devlog
MSSQL/自動採番をトリガで実現
2014年10月23日
主キー以外の項目で自動採番を実現するトリガは以下のような感じ。
(その項目にNULLが指定された場合のみ発動)
┌──────────────────────────────────────┐
│CREATE TRIGGER [dbo].[トリガ] ON [DB].[dbo].[表]                            │
│    INSTEAD OF INSERT                                                       │
│AS                                                                          │
│    INSERT INTO [DB].[dbo].[表]                                             │
│        (                                                                   │
│            [連番],                                                         │
│            [列]                                                            │
│        )                                                                   │
│        SELECT CASE WHEN [連番] IS NULL THEN                                │
│                        ISNULL(                                             │
│                            (SELECT MAX([別表].[連番])                      │
│                                 FROM [DB].[dbo].[表] AS [別表]             │
│                                 WHERE [表].[主キー] = inserted.[主キー]),  │
│                            0                                               │
│                        ) + 1                                               │
│                    ELSE                                                    │
│                        [連番]                                              │
│               END,                                                         │
│               [列]                                                         │
│            FROM inserted                                                   │
│;                                                                           │
└──────────────────────────────────────┘
分類:MSSQL