[pgsql-jp: 30271] Re: SQLの輿��ぢ関数について

fumiyaKitamura fkit.s @ sys238.jp
2003年 6月 30日 (月) 08:54:53 JST


キタムラです。


>> あと、よけいなお節介ですが、新規レコード作成時にmaxで値を取得しようとす
>> ると同時に新規作成が発生した場合、同一IDが発生してしまいます。
>>
>> 今回の場合「IDが主キーではない」「IDに同じ値が発生してもオッケー」または
>> 「一度に新規作成するのは必ず1クライアントのみ」ならばmaxでも良いのですが、
>> そうでないならシーケンスを利用したID値生成したほうがいいです。
>
> この場合、「table」をテーブルロックすれば大丈夫ですよね。
> ・「TABLE」をテーブルロック
> ・Insert文発行
> ・Commit発行
> いかがでしょうか。

なるほど、テーブルロックする手がありますね。

自分ではこのような場合、シーケンスを使うのが定石だったので他の方法を
考えた事がありませんでした。

ただテーブルロックのコストとか大量新規作成が発生したときの事を考えると
私はやっぱりシーケンス派です。

あ、あとテーブルロックされていてMAXで値がとれなかった場合のエラー処理も
考える必要がありますね。


=================<F.Kitamura>=================
E-Mail  : fkit @ sys238.jp
---
The greatest enemy of man is alcohol.
But, The Bible tells us to love our enemy.
==============================================




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