[pgsql-jp: 37366] Re: 挿入したデータのserial値を取得する方法

鈴木孝征 takamasa @ thaliana.myhome.cx
2006年 7月 28日 (金) 19:00:52 JST


鈴木です。お返事どうもありがとうございます。

Tietew wrote:
> select currval('test1_id_seq');

この方法だとデータの追加からselectまでの間、テーブルをロックしないといけ
ませんよね。私の作っているものではデータの追加がほぼ同時に起こることはな
いので問題ありませんが、一応そういうことも考えないといけないかと思うのです。

あと、test1_id_seqというシーケンス名はcreate tableのときにPostgreSQLが自
動で作成しますが、命名方法が変わったりしないのでしょうか。先に自分でシー
ケンスを作成していれば、名前をコントロールできるのですが、create tableの
結果を解釈して名前を取得する処理が面倒そうです。

Akinori FUJII wrote:
> defaultにnextvalを設定しているのなら
>
> 下記のINSERT文で自動採番されたあとにレコードが登録されるはずですよ。
> insert into test2 (name) values('test name');

その自動採番された数字がinsert文の返り値かなにかでわかればいいのですが、
方法はselect currval()しかないのですよね。





pgsql-jp メーリングリストの案内