ユーザーがプロジェクトを作成/開き、その情報を表示/更新できるWebページがあります。情報は MySQL データベースに保存されます。ユーザーは自分のプロジェクトをパートナーと共有できるため、パートナーも自分のプロジェクトを編集できます。この場合、2 人以上のユーザーが同時に特定のプロジェクトを開くと、互いの更新を上書きする可能性があります。したがって、このような同時更新を防ぎ、ユーザーに適切なメッセージを提供するための信頼できるコードを開発する必要があります。そのようなケースに対処するためのパターンまたはベスト プラクティスはありますか? ありがとうございました
1 に答える
4
単純なアプローチは、レコードが変更されたときにインクリメントされる各レコードにシーケンス番号を付けることです。ページが読み込まれると、シーケンス番号を非表示として含め、<input/>
更新クエリでこれを送信します。
UPDATE table
SET field1 = '?', field2 = '?', sequence = sequence + 1
WHERE id = ? AND sequence = ?;
クエリを実行すると、変更された行数を確認できます (データベース API は、クエリの後に "影響を受ける行" の数を取得する方法を提供する必要があります)。ゼロの場合、レコード ID が見つからなかったか、レコードが別のユーザーによって変更されました (sequence = ?
句が一致しませんでした)。
于 2013-07-12T18:13:51.750 に答える