[pgsql-jp: 29890] INSERTで作成したカラムのSERIAL 値の取り出し方

Ryo Kunieda formsoft @ tcct.zaq.ne.jp
2003年 5月 15日 (木) 05:48:46 JST


初めまして。本日より参加させていただいています。よろしくお願いいたします。

かなり昔に Infomix-SQL などを扱ったことがあるので一応SQLについては概要は分か
っているつもりですが、いわばリハビリ中の状態です。

早速ですが表題の件でお教えいただけませんでしょうか。

たとえば次のようなユーザー情報のテーブルがあるとします。

CREATE TABLE member (
id SERIAL PRIMARY KEY,
name varchar(16),
);

ここに
INSERT INTO member (name) VALUES('Ryo');
などとすれば「Ryo」さんが登録されて id に顧客番号が自動的に振られるのを期待
できると思います。
では、このSERIALの値はどのように取得すればいいのでしょうか?
「INSERT」の直後に name で検索することも考えたのですが、既に同じ名前のユーザ
ー情報が登録されていた場合(当然あり得ないことではありません。その為の顧客番
号なんですから)難しいことになるでしょう。
INSERTのTIMESTAMPを記録しておく方法も考えましたが、もし他のクライアントから
同時に登録処理が起きた場合(無いとは思いますが・・・)致命的なバグになってし
まいます。

こういう場合トランザクションしないといけないのでしょうか?
そもそも、登録したデータのユニーク値をその場で得られないというのはなんか変な
気がして、何か見落としがあるのではと思っていろいろ検索してみましたが解りませ
んでした。

こういう場合のセオリーなどがあればお教え下さい。

よろしくお願いいたします。


----------------------------------------------------------------
formsoft @ tcct.zaq.ne.jp (FormSoftware)
Ryo Kunieda -  FormSoftware
Osaka, Japan Tel:+81-6-6335-6266 Fax:+81-6-6335-6276
----------------------------------------------------------------



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