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 は、各 Mobile Link ユーザが最後にデータをダウンロードした日時を示すタイムスタンプ値を管理します。この値は、「最終ダウンロード時刻」と呼ばれます。

スクリプトでの最終ダウンロード時刻の使用を参照してください。

♦  テーブル用にタイムスタンプベースの同期を実装するには、次の手順に従います。
  1. 統合データベースで、ローの最終修正時刻を保持するカラムを追加します。通常、このカラムは次のように宣言されます。

    DBMS 最終変更カラム
    Adaptive Server Enterprise datetime
    IBM DB2 LUW timestamp
    IBM DB2 メインフレーム timestamp
    Microsoft SQL Server datetime
    MySQL timestamp
    Oracle date
    SQL Anywhere timestamp DEFAULT timestamp
  2. download_cursor イベントと download_delete_cursor イベントのスクリプト内で、最初のパラメータを timestamp カラムの値と比較します。

次のテーブル宣言とスクリプトによって、Contact サンプルの Customer テーブルに対するタイムスタンプベースの同期が実装されます。

  • テーブル定義

    CREATE TABLE "DBA"."Customer"(
       "cust_id"  integer NOT NULL DEFAULT GLOBAL AUTOINCREMENT,
       "name"  char(40) NOT NULL,
       "rep_id"  integer NOT NULL,
       "last_modified" timestamp NULL DEFAULT timestamp,
       "active"  bit NOT NULL,
       PRIMARY KEY ("cust_id") )
  • download_delete_cursor スクリプト

    SELECT cust_id
    FROM Customer JOIN SalesRep
    ON Customer.rep_id = SalesRep.rep_id
    WHERE Customer.last_modified >= {ml s.last_table_download}
        AND ( SalesRep.ml_username != {ml s.username}
              OR Customer.active = 0 )
  • download_cursor スクリプト

    SELECT cust_id, Customer.name, Customer.rep_id
    FROM Customer KEY JOIN SalesRep
    WHERE Customer.last_modified >= {ml s.last_table_download}
        AND SalesRep.ml_username = {ml s.username}
        AND Customer.active = 1

同期論理のソース・コードContact サンプルの顧客窓口の同期を参照してください。


スクリプトでの最終ダウンロード時刻の使用
夏時間への対応