[pgsql-jp: 36031] Re: PostgreSQLのシーケンス番号処理について

T.Nishimura nisimura @ weloveya.com
2005年 9月 22日 (木) 13:27:30 JST


ムラカミ様
伊藤様

ご回答ありがとうございます。



>
>
>> SELECT NEXTVAL('table_no_seq') FROM table;
>> を、使うと現在tableに登録されているレコード数分
>> NEXTVALを取得している様です。
>>
>> FROMを外すと、1件しか、結果が返ってこないのに
>> 付けると、複数のNEXTVALが返ってくるのはどうしてでしょう 
>> か?
>>
>>
>
> SELECT 'a';
>> SELECT 'a' FROM table;
>> SELECT 'a',* FROM table;
> の違いを考えてみてはいかがでしょうか。
>

上記、違いは、理解しております。

ただ、今までFROM句を付けた、状態で正常稼働しており、シーケ 
ンス番号も
正常にカウントアップしておりました。
内容をもう少し、詳しく書くと

SELECT NEXTVAL('table_no_seq') FROM table;  <= ここで、シーケ 
ンス値取得
pg_fetch_row($result, 0 , PGSQL_NUM); <= 0行目の値を取得
INSERT INTO table(no,data1,date) VALUES ('[上で取得した番 
号]','[データ内容]',CURRENT_TIMESTAMP); <= ここ 
で挿入

という形で、処理を求めているので、基本的には、データが複数取れる 
事に重大な問題がある訳ではないのですが
tableのno がNotNullなので、
NEXTVAL('table_no_seq')した時に、テーブルに行が有るにも関わらず 
データが取れない事が発生しているようなのです。


  _/ _/ _/ _/ _/ _/_/  _/ _/ _/ _/ _/ _/ _/ _/_/ _/
      西村 忠浩
      nisimura @ weloveya.com
  /~ /~ /~ /~ /~ /~ /~ /~ /~ /~ /~ /~ /~ /~ /~ /~




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