2009-08-18 12 views
0

: 私はアプリケーション(mysqlのPHPのjqueryの)を持っているユーザーは、次のことができます。取り扱いマルチユーザー(発行の請求書)マルチユーザー</p> <p>要件を取り扱い

  1. レビュー記録とは、特定のフィールドを更新します。
  2. 注文を選択して請求書を発行してください。

問題: 問題は、請求書を同じ期間に2回発行しないことです。また、複数のユーザーが同時にフィールドを更新すべきではありません。

可能なソリューション:

  1. は、それらが更新されます時に、テーブルをロックし、ユーザーがアクションを実行する場合、通知し、再ロードします。
  2. ユーザーが特定の操作を実行すると、他のユーザーが実行する操作をロックするインプリメントロックシステム。
  3. ...
+0

これはRoRにとって完璧なアプリケーションのようです。既にコードベースにコミットしていない場合は、切り替えを検討することをお勧めします。 – Justin

答えて

1

は分からないのですが、私は最初にあなたがそれらを読んで、変更後のDBに送り返すため、データ行に加えられた変更を追跡します。ネットのDataTableのアダプタのコンテキストでこれについて読みました。それは、変更されたものだけでなく、すべてのフィールドを送信することです。

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

2

ルック「楽観的ロックは、」 - 基本的にバージョン属性を追加し、それをバック渡すと、誰もが最初にそこに着いたん確認するために、アップデートでそれをインクリメント意味。 N人のユーザーが同じバージョンに基づいて同じ操作を試行すると、1人が勝ち、残りのユーザーは緩くなります。さまざまなケースで簡単に簡単に操作できます。これはあなたを助けるか、ない場合