[pgsql-jp: 26639] Re: 会員登録の重複

Yoshitake Shinohara yoshi @ yyn.jp
2002年 7月 9日 (火) 22:09:03 JST


よしたけ@YYNです。

> WebPageから会員情報を記入、「登録」ボタンを押すと
> ・email重複チェック
> ・会員テーブルinsert(pkeyはserial)
> という流れで登録処理を行うのですが、何故かたまにemailの重複した
> 会員データが登録されてしまいます。
> 短時間の内に、複数innsertが連続して行われるようです。
> 何故このような重複が発生するか?また、回避策をアドバイスお願いします。

トランザクションとロックをキーに検索される事をお薦めします。
具体的には、
bigin;
lock table 会員テーブル EXCLUSIVE MODE;
select email from 会員テーブル where email = '<new_email>';
結果がOKなら
insert into 会員テーブル (email) values ('<new_email>');
commit;
NGなら rollback;

でOKかと。
試してないので、鵜のみにせず調べてから使ってください。

------------------------
YYN partnership company
Yoshitake Shinohara
yoshi @ yyn.jp



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