これがシナリオです。複数のユーザーが PHP ページ/フォームを使用してデータを同時に編集しています。テーブルにはデータ行があり、各ユーザーは一度に 1 行ずつ編集できます。編集する行が選択されます。そのため、ユーザーには編集する行が与えられるだけです。どの行を編集するかは決めていません。
ユーザーがフォームを含むページに初めてアクセスすると、行が読み込まれます。また、システムはどの行を他の同時ユーザーに提供するかを決定できるように、その行が (別の同時ユーザーに対して) 編集のためにロードされたことを示すフラグをデータベース テーブルに設定します。
ここで、ユーザーがページを更新するか、[送信] ボタンをクリックせずにページを終了した場合、フラグの変更をロールバックして、読み込まれた行を再び編集できるようにします。
このために、MySQL トランザクションを使用する予定です。- トランザクションの開始時に、フラグが設定されます。- 次に、編集するデータがフォームに読み込まれます。
ユーザーがデータを編集して (ボタンをクリックして) 送信すると、Commit が発行されます。
したがって、私の理解では、START トランザクションとコミットは別々に発生します。
これを達成する方法について、誰かがガイドラインを提供してもらえますか?