[PHP-users 2997] Re: PEAR+PostgresでIns ert 時のシリアルを知りたい

Yasuo Ohgaki php-users@php.gr.jp
Sat, 20 Oct 2001 15:35:14 +0900


大垣です。

Katagiri Michiko wrote:

> 片桐といいます。
> 
> PEARを使ってPostgreSQLへのデータベースアクセスを抽象化している
> のですが、Serial型を使っているテーブルに対してInsertしたときの
> 値のとりかたが分からずに困っています。
> 
> 今までは、このようにして、Insertしたときの値を取得していました。
> 
> $result = pg_exec( "insert into hogetbl values( 
> nextval('hogetbl_hogeid_seq') )" );
> $oid = pg_getlastoid( $result );
> $result2 = pg_exec( "select id from hogetbl where oid=$oid" );
> $last_inserted_serial = pg_result( $result2 , 0 , 0 );
> この、$last_inserted_serialをPEARを使って取得したいのです。
> マニュアルや文献などを見てみたのですが、みつけることができません
> でした。
> どなたか親切な方に、お教えいただければと思っております。
> どうぞよろしくおねがいいたします。

ロジックは違いますが、insert後のserial型の値を取得したい場合、私は
先にnextval()を実行して取得した番号をinsertしています。この手順の
方が簡単と思います。
pg_getlastoid()を使わなくて済むので、PEARでも同じ様に実装できると
思います。(nextval()を実行する部分だけ抽象化する関数を自身で書く必
要があるとはおもいますが、、、)

--
Yasuo Ohgaki
yohgaki@dd.iij4u.or.jp


__________________________________________________
Do You Yahoo!?
Yahoo! BB is Broadband by Yahoo!  http://bb.yahoo.co.jp/