[pgsql-jp: 28820] Re: シーケンスの利用について

Masaru Sugawara rk73 @ sea.plala.or.jp
2003年 1月 28日 (火) 20:03:11 JST


すがわらです。

> 動きからして、インサート文のカラムの並びでなく、テーブルの定義の順に
> カラムのvaluesが評価されているように見えます。
> ちなみに、case1とcase2の順序を逆にして流すと、エラーになります。
> 
> アプリケーション内で書く場合、注意が必要ですね。

今までテーブルの定義順にしかインサートしたことがなかったので、
気づきませんでした。参考になりました。注意しないといけないですね。


> 何故、このような仕様になっているのでしょうか?

記述した順ではなく、単に式が評価される順に実行される仕様という
ことではないでしょうか。
これと似た現象はselect文でも発生します。selectの結果に連番を付
けるためシーケンスを使ったりしますが、その際記述した順番ではなく
クエリーのプランの順番にしたがって呼び出されます。そのため、思っ
た通り順番が振られない場合があるようです(回避する方法はあります)。
特に、サブクエリーで使用した場合は注意が必要なようです。


Masaru Sugawara






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