[pgsql-jp: 27658] テーブルの同時更新を防ぐには?

matsuda yumatuda @ msoft.co.jp
2002年 10月 17日 (木) 18:20:58 JST


エムソフトの松田と申します。

開発環境
rethatLinux7.2
postgres7.2.2

PHPを用い、WebからDBを更新/登録しています。
登録の流れは以下のようになっております。

------------------------------------------------------------
Aテーブルから今日の連番取得(日が変わると1に戻る)
↓
PHP側で日付+連番の登録コード作成
(例)200201010001
↓
Aテーブルに連番を+1して再登録
↓
作成した登録コード(プライマリキー)でBテーブルに新規登録
------------------------------------------------------------

という流れなのですが、同時アクセステスト時に、
数人一斉に「登録」ボタンを押すと、
ERROR: Cannot insert a duplicate key into a unique index.
と言うメッセージが表示されます。
これは既に登録しているプライマリキーで再度登録しようとしているため
だと思うのですが、複数人同時アクセス時にこのエラーを起こさせない
良い方法は無いでしょうか?(なるべく上記の処理の流れを変えずに・・・)
biginやcommitなど試みたのですが、やはり結果は変わりません。

お手数ですが、ご助言を頂けませんでしょうか?

 ------------------------------------
 (株)エム・ソフト
    松田優作
 ------------------------------------



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