2010年6月21日月曜日

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

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

たとえば以下のようなテーブルを作っておいて、
  1. CREATE TABLE mytbl (  
  2.    rid INTEGER NOT NULL DEFAULT AUTOINCREMENT CONSTRAINT PRIMARY KEY,  
  3.    val VARCHAR(20) NOT NULL  
  4. )  


ridは指定しないで行を書き込む。
  1. INSERT INTO mytbl (val) VALUES('aaaaa');  
  2. INSERT INTO mytbl (val) VALUES('bbbbb');  
  3. INSERT INTO mytbl (val) VALUES('ccccc');  


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

  • rid=1, val='aaaaa'

  • rid=2, val='bbbbb'

  • rid=3, val='ccccc'




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


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

0 件のコメント:

コメントを投稿