直前にデータをINSERTして採番された IDENTITY 列の値を取得する方法
2016/10/5
文書番号:20577
IDENTITY 列を含むテーブルにデータを挿入するとその列のデータは自動採番されます。
このテーブルに複数回に分けてデータを挿入する場合、IDENTITY 列以外にキーとなりうる項目がない場合、
INSERT したデータの IDENTITY 列の値を取得できないと UPDATE することができません。
そこで直前にINSERT したデータのIDENTITY 列の値を取得する方法です。
【IDENTITY 列の値を取得する】
- テスト用にテーブルを作成します。
--ROW_IDという列をIDENTITYにしてテーブルを作成します。 CREATE TABLE TABLE_A( ROW_ID int IDENTITY(1,1) NOT NULL ,CODE varchar(50) ,NAME varchar(50) )
- このテーブルにデータを挿入する際、CODE と NAME に一度にデータを挿入できない場合、
INSERT 時に採番された値を取得してその値を条件に更新します。
DECLARE @ROWID int --CODE列にのみデータを挿入する INSERT INTO TABLE_A(CODE) VALUES ('A01-0050') --直前に採番された IDENTITY 列の値を取得する SET @ROWID = @@IDENTITY --ROR_ID列を条件に更新SQLを実行する UPDATE TABLE_A SET NAME = 'みかん' WHERE ROW_ID = @ROWID