- トリガーが INSERT した場合、元の INSERT の ID ではなくトリガーで生成された ID を返すことがあります
- 同一セッション内であればどのテーブルの ID でも返すため、意図しない結果になる場合があります
Transact-SQLでinsertした要素のIDを取得するSQLを紹介します。
Transact-SQLでは挿入した要素のIDはSCOPE_IDENTITY, @@IDENTITY で取得できます。
通常の利用ではSCOPE_IDENTITYを利用します。
SCOPE_IDENTITY を用いる場合です。
insert into products (name, pricce) values ('Penguin', 230);
select insertID = SCOPE_IDENTITY();
@@IDENTITYを用いる場合です。
insert into products (name, pricce) values ('Penguin', 230);
select insertID = @@IDENTITY;
IDENT_CURRENTを用いる方法もあります。
insert into products (name, pricce) values ('Penguin', 230);
select insertID = IDENT_CURRENT ('Products');