intra-martのスクリプト開発時にインサートと同時にIDも欲しい時のSQL[SQLServer]

 

intra-martのスクリプト開発時には2waySQL(sqlファイルを指定しての実行)実装ができる。

ただ、intra-martは複数のクエリを実行する際には別ファイルで定義する必要がある。(返却地がDBResultという値なので1つのクエリに1つの結果という形を保持するためにも必要だと考えている)

なのでSELECT文ではなくOUTPUT句を使用して書くと良い。

INSERT HOGE  
    OUTPUT INSERTED.id  --ここでIDを取得する
VALUES ('foo', 'var');  

ただし、OUTPUT句は

INSERTED
挿入操作または更新操作で追加される値を指定する列プレフィックスです。 INSERTED プレフィックスの付いた列は、UPDATE、INSERT、または MERGE ステートメントが完了した後の、トリガーが実行される前の値を反映します。

OUTPUT 句 (Transact-SQL)

とあるように、予想値なのでほぼ同じ時間に複数のインサートが予想される場合は使用するべきではないと考えている。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする