![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
言語はColdFusion、データベースはpostgreSQL
サーバーはLinuxで会議室予約システムのWEBアプリケーションの開発を行っています。動作環境はIE6.0以上Javascriptが有効が前提)です。
ある特定のユーザーが登録する時だけ、2重登録が発生してしまいます。
テーブルには
予約ID(主キー)、場所、日時、仮予約NO(複数の場所・日時を一度に登録出来るので、グループ化するためのNO)を登録するのですが、予約IDと仮予約NOは一意のものなので、シーケンスで取得しています。ダブルブッキングは出来ないので場所と日時の組み合わせでかぶることはありません。
データはこんな感じに入っています。
予約ID|場所|日時 |仮予約NO
1 A 2005/6/1 1
2 B 2005/6/1 1
3 B 2005/6/7 2
4 C 2005/6/9 3
5 C 2005/6/9 4
予約ID1~3は正常な登録ですが、4と5が場所と日時がかぶっているので、不正なデータです。予約IDと仮予約NOは違うのですが、同じ場所と日時の予約が出来てしまいます。
登録のSQLの前に2度、同じ場所と日時で登録がないかSQLでチェックをしているのですが、同じトランザクション内で登録が行われているようで、そのチェックにも引っかかりません。
登録画面には2度押し防止の為に、登録ボタン押下後はボタンを無効にしています。
IE以外のブラウザを使っているのかと思って調べたところ、ちゃんとIEを使用されていました。
JavaScriptが無効なのかとも思いましたが、有効になっていないと登録処理にまで、辿り着かない作りになっています。
クライアントでの2度押しのチェック強化方法とサーバーサイドでの2度押しのチェック、トランザクション内で同じSQLを発行させないような方法など、何かありましたら教えください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
とりあえず、「二重登録がどうして発生するか?」のメカニズムはわかりませんが..
二重登録という矛盾するデータをデータベースに登録できなくすることで、
問題が他に波及することは抑制できるハズです。
例えば、”場所+日時”のユニークインデックスを張るとか..
その上で、イレギュラーなケースが如何にして起こるのかを
じっくり対応すればよいかと思います。
No.1
- 回答日時:
他の方から回答がつかないのは、それが難解な問題だからではなく、質問内容における説明が見当違いで、回答のしようがないからだと思いますよ。
質問者さんは、SQLが2回おきるのが異常だ、クライアント側での2度押し防止・・・と考えられているようですが、その検討は的外れのような気がしてなりません。
一番怪しいのは、2重登録をさせないための、同じ場所、同じ日時をチェックしているというSQL文、ロジックで単純ミスをしているためだと思われます。もちろんあいまいな状況説明から推測していますので、まったく別の原因かもしれません。
とりあえず実行しているSQL文、データベースのカラム構造などを詳細に明記してみてください。自分ではそんなミスはないと思っていても案外!!!なことがベテランでも往々におこります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(お金・保険・資産運用) 助けてください... 明日友達と急遽、旅行に行くことになり アゴダでホテルを予約したのですが 友達と 4 2023/06/16 15:54
- MySQL SQLで日付別のIDを生成するには 3 2022/10/09 10:34
- 新幹線 スマートEX交通系ICカード複数登録方法を教えて下さい 1 2022/12/27 22:58
- 楽天市場 楽天トラベルのクレジットカード情報 1 2023/06/20 23:19
- ハッキング・フィッシング詐欺 OKWAVEのログインと会員登録と新規登録 1 2023/04/10 17:09
- InternetExplorer(IE) PC Windows10 URL登録(お気に入り登録)が時々いつの間にかログインできない状態になる 1 2022/12/25 08:41
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- 車検・修理・メンテナンス タイヤ館、オートバックスのアプリに詳しい方 2 2023/08/16 20:14
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データが2重登録されてしまいます
-
マッチングアプリにいる女性に...
-
電話番号を変えたら、Yahoo!知...
-
ヤマダモバイル機種変更
-
自販機でモバイルPASMOが使えない
-
誰も電話帳にSNSプロフィールっ...
-
三菱ufjニコスカードのVIZAを使...
-
regsvr32.exe による DLLの登...
-
fc2登録について
-
番号の登録しない人っていますか?
-
Googlepixel8aにeSiMを登録しよ...
-
自筆と直筆の違いを教えてくだ...
-
ジャニーズウェブについてです...
-
X、嫌がらせで通報されまくって...
-
習い事の退会届の書き方
-
LINEの履歴はいつまで残る...
-
至急!!ペアーズ登録直後に強...
-
アクセスのフォームを間違って...
-
Excel ワークシート削除 確認...
-
LINEに詳しい方よろしくお願い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱ufjニコスカードのVIZAを使...
-
マッチングアプリにいる女性に...
-
regsvr32.exe による DLLの登...
-
fc2登録について
-
この教えてgoo!のプロフィール...
-
特定商工業者?(法定台帳登録...
-
誰も電話帳にSNSプロフィールっ...
-
自販機でモバイルPASMOが使えない
-
知恵袋登録したくて認証コード...
-
ユーチューブのお気に入りが消...
-
Benesseのマナビジョンで、氏名...
-
ジャニーズショップの同行者登...
-
中国のファイル共有サイト115.c...
-
九州電力の電気代・使用量をHP...
-
番号の登録しない人っていますか?
-
電話番号を変えたら、Yahoo!知...
-
すべてのチェックボックスがoff...
-
ベガプロモーションというライ...
-
シェルスターレックスカード NI...
-
私が精神病のことをどこから知...
おすすめ情報