[pgsql-jp: 33456] Re: RULEにおけるNEW について

MINOURA minoura @ wplanning.co.jp
2004年 7月 1日 (木) 17:03:32 JST


みのです。

北村さん、早速のお返事ありがとうございます。

> このとき、ルール内に書かれた NEW.code は同様に nextval() が
> 呼ばれ、値としては 2 となります。
そうだったんですね。確かにINSERT文を繰り返し実行すると、
シリアルが連番にならなかったので、おっしゃる通りだと思います。
でも、なぜNEWというキーワードがnextval()を呼び出す必要が
あるんでしょうね?
僕の理解では、NEWというキーワードは
「現在INSERT又はUPDATEしたレコードを格納している仮想テーブル」
のようなものを意味していると思っていたのですが、
(正確な定義をオンラインドキュメントから見つけられませんでした・・
 違ってたらすいません。)
だとしたら、なにもシーケンスとは関わりが無いはずなのに・・と
悩んでしまいました。

> serial型をやめるか、ルールではなくトリガにすれば問題は解決で
> す。
トリガならそんな問題ないのですね。ただ自分はトリガを使ったことないので
とりあえず、今回は上位レベル(java)で仕組みを作ることにしました。

貴重な情報ありがとうございました。助かりました。




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