Insert文発行とSerial値

今回はミニTIPSです。

Postgresqlでは、主キーの値を自動採番する場合は、カラムの型をserialにします。

insert時にserial値が自動採番されます。

プログラムの中でSerial値を取得して使いたい場面が良く出て来ます。

よくあるのが、insert文の後にselect 文を発行して採番された値を取得したりしますが、

SQLを2回発行することになり効率がよくないです。

 

SQL1回の発行でSerial値を取得する方法を紹介します。

RETURNING 句の利用

postgresqlでは、insert文の後にreturning句を使用することで、列の値を戻してくれます。

 

instert文を上記のように書いておき、insert文のsqlに対してPreparedStatementのexecuteQuery()メソッドを呼んで

Resultを取得します。ResultSetの中に取得したSerial値が入っています。

 

Javaのサンプルコードは以下のようになります。(コネクションの取得などの処理は割愛しています。)