[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 メーリングリストの案内