Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » Mobile Link - サーバ管理 » Mobile Link サーバ・テクノロジの使用 » 同期の方法 » 競合の解決

 

競合について

警告

同期テーブルのプライマリ・キーは更新しないでください。プライマリ・キーは、異なるデータベース (リモートと統合) 内の同じローを識別する唯一の方法であり、競合を検出する唯一の方法なので、プライマリ・キーを更新すると、プライマリ・キーの目的が無効になります。

競合はエラーとは異なります。競合が起こる可能性がある場合は、適切な値を計算するプロセスを定義するか、最低でも競合のログを取ってください。優れたアプリケーションを設計するには、競合の解決は不可欠です。

同期のダウンロード処理中は、リモート・データベースでは競合は発生しません。ダウンロードしたローに新しいプライマリ・キーが含まれている場合は、その値は新しいローに挿入されます。新しいプライマリ・キーが既存のローのプライマリ・キーと一致する場合は、そのローの値が更新されます。

User1 が最初に 10 個の在庫を売り出し、そのうち 3 個を販売して、Remote1 にある在庫の値を 7 個に更新します。User2 は 4 個販売し、Remote2 にある在庫を 6 に更新します。Remote1 が同期を実行すると、統合データベースは 7 に更新されます。Remote2 が同期を実行すると、在庫の値が 10 ではなくなっているため、競合が検出されます。この競合をプログラムで解決するには、次のような 3 つのロー値が必要となります。

  1. 統合データベースにある現在の値。

  2. Remote2 がアップロードした新しいローの値。

  3. Remote2 が最後の同期中に取得した古いローの値。

この場合、ビジネス論理は新しい在庫数を計算し、競合を解決するために次の方法を使用できます。

current consolidated - (old remote - new remote)
-> 7 - (10-6) = 3

競合の処理方法に関するその他の例については、次の項を参照してください。