[pgsql-jp: 29977] Re: oid の同一性と生成ロジックについて

T.MURAKAMI rym @ 7star.net
2003年 5月 19日 (月) 14:04:43 JST


ぴょンです。

>> つまるところ、PostgreSQLにおいて
>> initdb以降同一のクエリーを同じ順に実行した場合に、
>> oidが同一であることがoidの生成ロジック的に保証されていれば
>> 実質的な問題は発生しない、と言えると思うのですが、
>> いかがなものなのでしょうか。
>
>保証はされていないと思いますが、現状ではほぼそのように動作します。

今後の実装で保証されるわけではないのですし。

>むしろ、同じ順に実行していると保証することの方が大変で、それを保証できな
>いからこそ、この記事の作者(読んでないけど三谷さん?)は「レプリケーショ
>ンできない」と書いているのだと思います。

クエリ内で日付をインサートしたらレプリケーションごとに入っている時間が違ってたなんてのはシャレにならないですよね。
今度こそselectでエラーが起きてしまいます。

>> ちなみに、いまは、ウェブアプリケーションにおいて、
>> 新規データの登録時に、INSERTの後にoidを取得し、
>> そのoidを用いてそのデータのシリアルなIDを取得する、
>> というロジックを多用しています。
>
>そもそも、そのロジックがあまりよろしくないと思います。この場合のID取得に
>はcurrval()関数を使うとか、serial型を使わずに自前でsequence管理するのが
>筋でしょう。

もちろんトリガーなしで、プログラムのロジックとして書くべきでしょう。







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