私にはフラッシュゲームがありました。ユーザーには多くのアイテムがありました。このSQL重複行はどのように発生しましたか?
id - user_id - item_type_id - quantity
ユーザがアイテムを取得するたびに、私は、ユーザーが既にそのアイテムタイプの行を有するかどうかを確認するために、データベース上で選択を行います。各項目は、列とデータベース内のテーブルの行です。存在しない場合は挿入され、そうでない場合は数量が増えてコミットされます。すべては常にトランザクション内にあります。
ゲームが大量になると、重複したアイテムの行が表示されることがあります。今は、重複行をチェックして数量をマージし、二重行を削除するselectを実行します。
- どのようにこの問題が起こるのでしょうか?
- 問題を回避するにはどうすればよいですか?
私はMySQLを使用しています。
ありがとうございます。列ペアの一意制約については、このために使用される一意の列ペアはわかりません –