HOME >> Tips >> SQL Server Tips >> SQL

直前にデータをINSERTして採番された IDENTITY 列の値を取得する方法

2016/10/5
文書番号:20577




IDENTITY 列を含むテーブルにデータを挿入するとその列のデータは自動採番されます。

このテーブルに複数回に分けてデータを挿入する場合、IDENTITY 列以外にキーとなりうる項目がない場合、 INSERT したデータの IDENTITY 列の値を取得できないと UPDATE することができません。

そこで直前にINSERT したデータのIDENTITY 列の値を取得する方法です。

【IDENTITY 列の値を取得する】

  1. テスト用にテーブルを作成します。
    
    --ROW_IDという列をIDENTITYにしてテーブルを作成します。
    CREATE TABLE TABLE_A(
         ROW_ID int IDENTITY(1,1) NOT NULL
        ,CODE   varchar(50)
        ,NAME   varchar(50)
    )
    
  2. このテーブルにデータを挿入する際、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