0


0

マルチユーザーの取り扱い

要件:私はユーザーができるアプリケーション(mysql php jquery)を持っています。

  1. レコードを確認して特定のフィールドを更新します。

  2. 注文を選択して請求書を発行します。

問題:問題は、請求書が同じ期間に2回発行されるべきではないということです。 また、1つのフィールドを2人以上のユーザーが同時に更新しないでください。

可能な解決策:

  1. テーブルが更新されたらテーブルをロックし、ユーザがアクションを実行した場合は通知してリロードします。

  2. 暗黙ロックシステム。ユーザーが特定のアクションを実行すると、他のユーザーが実行するアクションをロックします。

  3. …​

3 Answer


2


ルックアップの「楽観的ロック」 - 基本的には、バージョン属性を追加してそれを渡し、それを更新でインクリメントして、他に誰もいないことを確認します。 N人のユーザが同じバージョンに基づいて同じ操作を試みると、1人が勝ち、他が失います。 多種多様な場合に簡単で簡単です。


1


これが役に立つかどうかはわかりませんが、データ行を読み込んでから変更を加えた後にdbに送り返すので、まずデータ行に加えられた変更を追跡する.NetのDataTable Adapterのコンテキストでこれについて読みます。 それがすることはただ変更されたものの代わりに全てのフィールドを送ることです。

行にはタイムスタンプを使用できます。 タイムスタンプを他の情報と一緒に読んで、現在のタイムスタンプ(行数)があなたが持っているものより新しいかどうかチェックを保存する前に。 こうすれば、この部分だけにロックを最小限に抑えることができ、タイムスタンプを比較して、最初に到達した場合は更新できます。


0


あなたがた両方に感謝します。 両方の選択肢を検討します。