- ベストアンサー
serialの値をINSERT時に取得する方法
PostgreSQL8.3系を使っています。 PostgreSQLのserial型を使って、連番を意識せずINSERTして登録しているのですが、直前に登録した連番(serial)が知りたいことがありまして、 簡単に取得する方法がわかりません。 気になる点ですが書きこんだ後、他から書き込みがあった場合の直前は他のデータになると思うので、書き込んだ直後のserialフィールドのmax値はあてにならないと考えますが、詳しい方教えてください。 書きこんだ直後についでに何か取得できる(書きこんだときのserial値がわかる)方法はあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
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を参照のこと)