リモートデータベースと統合データベースの両方でローが更新された場合は、次にデータベースを同期するときに競合が発生します。
競合の検出には、次のオプションがあります。
[競合検出を実行しない] このオプションを選択すると、競合は検出されません。アップロードされた更新は、競合を確認しないで適用されます。これにより、統合データベースから現在のローの値をフェッチする必要がなくなるため、更新の同期が高速になることがあります。
[ローベースの競合検出] 最後の同期後に、リモートデータベースと統合データベースの両方でローが更新されていた場合に競合が検出されます。
このオプションは、upload_fetch スクリプトと upload_update スクリプトを定義します。 upload_fetch または upload_fetch_column_conflict スクリプトによる競合の検出を参照してください。
[カラムベースの競合検出] リモートデータベースと統合データベースの両方で、ローの同じカラムが更新されていた場合に競合が検出されます。
このオプションは、upload_fetch_column_conflict スクリプトを定義します。 upload_fetch または upload_fetch_column_conflict スクリプトによる競合の検出を参照してください。
テーブルに BLOB があり、カラムベースの競合検出を選択した場合は、ローベースの競合検出が使用されます。
競合の解決には、次のオプションがあります。
[統合] 先入れ勝ちです。アップロードされた更新が競合する場合は拒否されます。
[リモート] 後入れ勝ちです。アップロードされた更新が常に適用されます。
このオプションは、カラムベースの競合検出だけに使用してください。それ以外の場合に使用すると、競合検出を選択しない方が、同じ結果でパフォーマンスがよくなります。
[タイムスタンプ] 最新の更新が適用されます。このオプションを使用するには、テーブルの TIMESTAMP カラムを作成し、維持する必要があります。この TIMESTAMP カラムに、ローが最後に変更された時刻が記録されます。統合データベースとリモートデータベースの両方にカラムが存在し、タイムスタンプベースのダウンロードで使用されるカラムと異なっている必要があります。これを機能させるには、リモートデータベースと統合データベースで同じタイムゾーン (UTC を推奨) を使用し、かつクロックが同期されている必要があります。
[カスタム] 独自の resolve_conflict スクリプトを作成します。この処理は、ウィザード終了後に [イベント] タブで行います。
resolve_conflict スクリプトによる競合の解決を参照してください。
Sybase Central の [フォルダー] ビューで、[Mobile Link 12]、Mobile Link プロジェクト名、[同期モデル] を展開してから、同期モデル名を選択します。
右ウィンドウ枠で、[マッピング] タブを開きます。
[テーブルマッピング] ウィンドウ枠で、テーブルマッピングを選択します。
[競合の検出] ドロップダウンリストで、[なし]、[ローベース]、[カラムベース] のいずれかをクリックします。[なし] を選択した場合は、ここで完了です。
[ローベース] または [カラムベース] を選択した場合は、[競合の解決] ドロップダウンリストから [統合]、[リモート]、[タイムスタンプ]、[カスタム] のいずれかを選択します。
[タイムスタンプ] を選択した場合は、下ウィンドウ枠の [競合の解決] タブを開き、使用する TIMESTAMP カラムの名前を入力します。
[カスタム] を選択した場合は、[イベント] タブを開き、テーブルの resolve_conflict スクリプトを作成します。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |