SQL

Insertしたデータのシーケンスを取得

2009年07月26日
シーケンスを設定しているテーブルにデータをInsertすると、自動でシーケンス番号が登録されます。
この値を取得したい場合があります。

PostgreSQLでは、【RETURNING】という関数が用意されています。
シーケンスフィールドが、【id】だとすると、

INSERT talbe (field) VALUES ('Insertしたい値') RETURNING id;

で割り当てられたシーケンス番号が取得できます。

SELECT id FROM table;
のSQLを発行したときと同じように値が返ってきます。


ところが【RETURNING】関数は、PostgreSQL 8.2以上でサポートされている関数です。
8.2以下だと別の対処法が必要です。

あまり頻繁にデータが登録されるテーブルではないので、【MAX】関数を代用します。

SELECT MAX(id) FROM table;


PostgreSQLのバージョンチェックは、
SELECT version();

です。