重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

PostgreSQL8.3系を使っています。
PostgreSQLのserial型を使って、連番を意識せずINSERTして登録しているのですが、直前に登録した連番(serial)が知りたいことがありまして、
簡単に取得する方法がわかりません。

気になる点ですが書きこんだ後、他から書き込みがあった場合の直前は他のデータになると思うので、書き込んだ直後のserialフィールドのmax値はあてにならないと考えますが、詳しい方教えてください。

書きこんだ直後についでに何か取得できる(書きこんだときのserial値がわかる)方法はあるのでしょうか?

A 回答 (2件)

8.2からRETURNINGというのがあるらしい。


http://blog.ozacc.com/archives/001613.html
    • good
    • 0

こんにちは。



CREATE TABLE pgtbl
(
f1 SELIAL,
 ・ ,
 ・ ,
);

でテーブルが定義されていたら、f1のシーケンス名は
pgtbl_f1_seqとしてpg_classに生成されています。

で、
SELECT last_value FROM pgtbl_f1_seq;
ですべてのセッションで割り当てられた最後の値が取得できます。

(データ型(連番型), CREATE SEQUENCEを参照のこと)
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す

今、見られている記事はコレ!