• ベストアンサー

serialの値をINSERT時に取得する方法

PostgreSQL8.3系を使っています。 PostgreSQLのserial型を使って、連番を意識せずINSERTして登録しているのですが、直前に登録した連番(serial)が知りたいことがありまして、 簡単に取得する方法がわかりません。 気になる点ですが書きこんだ後、他から書き込みがあった場合の直前は他のデータになると思うので、書き込んだ直後のserialフィールドのmax値はあてにならないと考えますが、詳しい方教えてください。 書きこんだ直後についでに何か取得できる(書きこんだときのserial値がわかる)方法はあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

8.2からRETURNINGというのがあるらしい。 http://blog.ozacc.com/archives/001613.html

その他の回答 (1)

  • Dodonpa2
  • ベストアンサー率82% (19/23)
回答No.2

こんにちは。 CREATE TABLE pgtbl ( f1 SELIAL,  ・ ,  ・ , ); でテーブルが定義されていたら、f1のシーケンス名は pgtbl_f1_seqとしてpg_classに生成されています。 で、 SELECT last_value FROM pgtbl_f1_seq; ですべてのセッションで割り当てられた最後の値が取得できます。 (データ型(連番型), CREATE SEQUENCEを参照のこと)

関連するQ&A