N人のユーザーが領収書データを入力できるウェブアプリを作成しています。MySQL:selectを実行する前に必ず更新を実行する方法を教えてください。
スキャンしたレシートのセットがユーザに与えられているが、せいぜい2人のユーザが同じレシート上で動作するべきではありません。
すなわち、ユーザAとユーザBが受信-1上で動作することができるが、ユーザCがそれに働くことができない(別の領収書、領収書-2、ユーザCに割り当てられるべきであると言います)。
は、私が使用していますテーブル構造は、次のようになります。
[ユーザーレシート表]
+------------+--------------+
| user_id | receipt_id |
+------------+--------------+
| 000000001 | R0000000000 |
| 000000001 | R0000000001 |
| 000000001 | R0000000002 |
| 000000002 | R0000000000 |
| 000000002 | R0000000001 |
+------------+--------------+
[レシート表]
+-------------+--------+
| receipt_id | status |
+-------------+--------+
| R0000000000 | 0 |
| R0000000001 | 1 |
| R0000000002 | 0 |
| R0000000003 | 2 |
+-------------+--------+
★ステータス0:1が割り当てられていないユーザ2に割り当てられている:2人のユーザ
-
に割り当てステータス「2」
- に等しくないレシートテーブルから
- 選択領収領収書が割り当てられているユーザーと共にステップ1からフェッチされたレシートをセルします。
- 更新受信状況(> 1 0-または1-> 2)
これは私が上記の要件を達成するために計画方法です。
このアプローチの問題は、更新(STEP3)が実行される直前(STEP1)選択が実行される可能性があり得るということです。 この場合、ステータス2の領収書がフェッチされ、要件を満たさない別のユーザーに割り当てられます。
これが起こらないようにするにはどうすればよいですか?すべての目的のために
ヒントを使用して行うことができます – Strawberry