SQLで最後に更新したIDを取得するには?
これはInterSystems FAQ サイトの記事です。
LAST_IDENTITY() SQL関数を使用すると取得できます。
※ この関数は、埋め込み SQL または ODBC 利用時に使用できます。ダイナミック SQL、SQL シェル、または管理ポータルの SQL インタフェースによる値には設定されません。
簡単な埋め込み SQL での例をご紹介します。
{
ClassMethod GetLastID() As %Integer [ SqlProc ]
{
//ソースコードコンパイル時に存在しないテーブルがあるので実行時にコンパイル
#SQLCompile Mode=Deferred
//テーブル作成
&sql(CREATE TABLE Sample.Students (
StudentName VARCHAR(30),
StudentAge INTEGER,
StudentID IDENTITY))
//データ登録
&sql(INSERT INTO Sample.Students (StudentName,StudentAge) values('生徒1',16))
&sql(INSERT INTO Sample.Students (StudentName,StudentAge) values('生徒2',17))
//最後に更新したIDを取得
&sql(SELECT LAST_IDENTITY() into :lastid from Sample.Students)
return lastid
}
}
ストアドプロシージャとして実行した結果は以下の通りです(管理ポータルで実行しています)。
詳細は下記ドキュメントページもご参照ください。
LAST_IDENTITY【IRIS】
LAST_IDENTITY