1

ユーザーがプロジェクトを作成/開き、その情報を表示/更新できるWebページがあります。情報は MySQL データベースに保存されます。ユーザーは自分のプロジェクトをパートナーと共有できるため、パートナーも自分のプロジェクトを編集できます。この場合、2 人以上のユーザーが同時に特定のプロジェクトを開くと、互いの更新を上書きする可能性があります。したがって、このような同時更新を防ぎ、ユーザーに適切なメッセージを提供するための信頼できるコードを開発する必要があります。そのようなケースに対処するためのパターンまたはベスト プラクティスはありますか? ありがとうございました

4

1 に答える 1

4

単純なアプローチは、レコードが変更されたときにインクリメントされる各レコードにシーケンス番号を付けることです。ページが読み込まれると、シーケンス番号を非表示として含め、<input/>更新クエリでこれを送信します。

UPDATE table
SET field1 = '?', field2 = '?', sequence = sequence + 1
WHERE id = ? AND sequence = ?;

クエリを実行すると、変更された行数を確認できます (データベース API は、クエリの後に "影響を受ける行" の数を取得する方法を提供する必要があります)。ゼロの場合、レコード ID が見つからなかったか、レコードが別のユーザーによって変更されました (sequence = ?句が一致しませんでした)。

于 2013-07-12T18:13:51.750 に答える