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 テクノロジの概要 » Mobile Link のモデル » モデル・モード

 

競合の検出と解決の変更

リモート・データベースと統合データベースの両方でローが更新された場合は、次にデータベースを同期するときに競合が発生します。

競合の検出には、次のオプションがあります。

  • [競合検出を実行しない]   このオプションを選択すると、競合は検出されません。アップロードされた更新は、競合を確認しないで適用されます。これにより、統合データベースから現在のローの値をフェッチする必要がなくなるため、更新の同期が高速になることがあります。

  • [ローベースの競合検出]   最後の同期後に、リモート・データベースと統合データベースの両方でローが更新されていた場合に競合が検出されます。

    このオプションは、upload_fetch スクリプトと upload_update スクリプトを定義します。upload_fetch スクリプトによる競合の検出を参照してください。

  • [カラムベースの競合検出]   リモート・データベースと統合データベースの両方で、ローの同じカラムが更新されていた場合に競合が検出されます。

    このオプションは、upload_fetch_column_conflict スクリプトを定義します。upload_fetch スクリプトによる競合の検出を参照してください。

    テーブルに BLOB があり、カラムベースの競合検出を選択した場合は、ローベースの競合検出が使用されます。

競合の解決には、次のオプションがあります。

  • [統合]   先入れ勝ちです。アップロードされた更新が競合する場合は拒否されます。

  • [リモート]   後入れ勝ちです。アップロードされた更新が常に適用されます。

    このオプションは、カラムベースの競合検出だけに使用してください。それ以外の場合に使用すると、競合検出を選択しない方が、同じ結果でパフォーマンスがよくなります。

  • [タイムスタンプ]   最新の更新が適用されます。このオプションを使用するには、テーブルのタイムスタンプ・カラムを作成し、維持する必要があります。このタイムスタンプ・カラムに、ローが最後に変更された時刻が記録されます。このカラムは、統合データベースとリモート・データベースの両方に存在する必要があります。これを機能させるには、リモート・データベースと統合データベースで同じタイム・ゾーン (UTC を推奨) を使用し、かつクロックが同期されている必要があります。

  • [カスタム]   独自の resolve_conflict スクリプトを作成します。この処理は、ウィザード終了後に [イベント] タブで行います。

    resolve_conflict スクリプトによる競合の解決を参照してください。

♦  競合の検出と解決をカスタマイズするには、次の手順に従います。
  1. モデル・モードで [マッピング] タブを開きます。

  2. [テーブル・マッピング] ウィンドウ枠で、リモート・テーブルを選択します。

  3. [競合検出] ドロップダウン・リストで、[なし][ローベース][カラムベース] のいずれかを選択します。[なし] を選択した場合は、ここで完了です。

  4. [ローベース] または [カラムベース] を選択した場合は、[競合解決] ドロップダウン・リストから [統合][リモート][タイムスタンプ][カスタム] のいずれかを選択します。

  5. [タイムスタンプ] を選択した場合は、下ウィンドウ枠の [競合の解決] タブを開き、使用するタイムスタンプ・カラムの名前を入力します。

  6. [カスタム] を選択した場合は、[イベント] タブを開き、テーブルの resolve_conflict スクリプトを作成します。

参照