[pgsql-jp: 34515] Re: データ登録時の重複チェックについて

ngy.yt @ daikodenshi.co.jp ngy.yt @ daikodenshi.co.jp
2004年 12月 21日 (火) 20:11:32 JST


谷田様。ご返信ありがとうございます。

>> Webアプリケーションで、商品の登録をさせようとしているのですが、一人の人が同日に
>> 同じ商品を登録できないよう、テーブルを「EXCLUSIVE MODE」でロックをかけ、チェッ
>> クを行っています。
>> チェック方法は下記の通りです。
>> 	BEGIN
>> 	LOCK TABLE goods IN ACCESS EXCLUSIVE MODE
>> 	SELECT regist_date as max_date FROM goods WHERE member_code='00000' ORDER BY max_date desc;
>> 	上記SQLで取得した時間と、現在時刻を比較し、取得した日付から1日以上経過しているならデータ登録
>> 	END
>> 
>> しかし、この方法ですと、誰かが登録をしている最中は他の人も登録することが出来ずア
>> クセスが集中しているときには、処理が遅くなってしまい困っています。
>> テーブルのロックをかけずに重複チェックを行う方法、または、他によい方法はないでしょ
>> うか?
>
>select for updateでできませんかね?

新規登録をする場合、select for updateですと二重チェックを行うことが出来ないと認識しているのですが、
間違いでしょうか?
チェックを行う方法があるならば、ご教授を願い致します。



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