PostgreSQLには、MySQLでいうオートインクリメントのような、連番を扱うserialというデータ型が用意されている。

serial型で定義されたカラムには、INSERT文を実行した時に特に値を設定しなくても自動で連番が割り振られていく。

今回は記事タイトルにもあるとおり、直近でINSERT文を実行したテーブルのserial最大値を取得する方法を紹介する。

INSERT文の後に実行するSQL

下記のSQLを実行すると、直前に処理をおこなったテーブルのserial最大値を取得することができる。

SELECT LASTVAL();

この方法は、売上テーブル、売上明細テーブルのように、リレーション関係にある複数のテーブルに対しINSERT文を実行する場合などで使う場面が多いだろう。