2010年6月21日月曜日

SQL Anywhere 自動採番したIDを取得する

データベースSQL Anywhereにはテーブル列のデフォルト値にAUTOINCREMENTを指定することで行をinsertしたときに自動採番した値が入るようになる。

たとえば以下のようなテーブルを作っておいて、

CREATE TABLE mytbl (
rid INTEGER NOT NULL DEFAULT AUTOINCREMENT CONSTRAINT PRIMARY KEY,
val VARCHAR(20) NOT NULL
)


ridは指定しないで行を書き込む。

INSERT INTO mytbl (val) VALUES('aaaaa');
INSERT INTO mytbl (val) VALUES('bbbbb');
INSERT INTO mytbl (val) VALUES('ccccc');


この結果は以下の3行となる。

  • rid=1, val='aaaaa'

  • rid=2, val='bbbbb'

  • rid=3, val='ccccc'




さて、ここで採番された値を知る方法であるが、グローバル変数@@identityに最後に割り振られた値が格納されるので以下のSQLを実行することで値を取得できる。

SELECT @@identity;


例の場合は結果は3になる。

0 件のコメント:

コメントを投稿