私はデータベーステーブル(正規化、MS SQLサーバー上)を設計し、少数のユーザーが情報を追加および編集するために使用するアプリケーション用のスタンドアロンWindowsフロントエンドを作成しました。後日、生産エリア全体を検索できるようにWebインターフェイスを追加します。
2人のユーザーが同じレコードの編集を開始した場合、最後に更新をコミットすると「勝者」になり、重要な情報が失われる可能性があるのではないかと心配しています。いくつかの解決策が思い浮かびますが、私がより大きな頭痛を引き起こすかどうかはわかりません。
- 何もせず、2人のユーザーが同じレコードを同時に編集しないことを期待してください。-ハッピングされたことがないかもしれませんが、ハプされた場合はどうなりますか?
- 編集ルーチンは、元のデータと更新のコピーを保存し、ユーザーが編集を終了したときに比較することができます。それらが異なる場合は、showuserとcomfirmupdate-データの2つのコピーを保存する必要があります。
- 最後に更新されたDATETIME列を追加し、更新時に一致するかどうかを確認します。一致しない場合は、違いを表示します。-関連する各テーブルに新しい列が必要です。
- ユーザーがチェックされるレコードの編集を開始したときに登録する編集テーブルを作成し、他のユーザーが同じレコードを編集できないようにします。-ユーザーがプログラムからクラッシュした場合にデッドロックやレコードがロックされるのを防ぐために、プログラムフローを慎重に検討する必要があります。
より良い解決策はありますか、それとも私はこれらのいずれかに行くべきですか?