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 イベント » 同期スクリプトの作成

 

ローをダウンロードするスクリプトの作成

ダウンロード・トランザクション時に各テーブルの処理に使用できるスクリプトは、2 つあります。挿入と更新を実行する download_cursor スクリプトと、削除を実行する download_delete_cursor スクリプトです。

これらのスクリプトは、SELECT 文か、結果セットを返すプロシージャの呼び出しのどちらかです。Mobile Link サーバは、スクリプトの結果セットをリモート・データベースにダウンロードします。Mobile Link クライアントは自動的に、download_cursor スクリプトの結果セットに基づいてローを挿入または更新し、download_delete_cursor イベントに基づいてローを削除します。

ストアド・プロシージャの使用の詳細については、ストアド・プロシージャ・コールからの結果セットのダウンロードを参照してください。

Mobile Link サーバは、データを 1 つのトランザクションでダウンロードします。ダウンロード処理の説明については、ダウンロード中のイベントを参照してください。

注意
  • アップロードと同様、ダウンロードも接続イベントで開始、終了します。他のイベントは、テーブル・レベルのイベントです。

  • SendDownloadAck 設定を ON に変更した場合、サーバの動作は、使用しているダウンロード確認モードによって異なります。ブロッキング・ダウンロード確認の場合、ダウンロードの確認をクライアントから受け取らなかった場合、統合データベースではダウンロード・トランザクション全体がロールバックされます。非ブロッキング・ダウンロード確認の場合、ダウンロード・トランザクションはコミットされますが、ダウンロード・タイムスタンプ更新スクリプトとダウンロード確認スクリプトは確認を受信するまで実行されません。

    デフォルトでは、SendDownloadAck は OFF に設定されています。

    SendDownloadACK (sa) 拡張オプションSend Download Acknowledgement 同期パラメータ-nba オプションnonblocking_download_ack 接続イベントpublication_nonblocking_download_ack 接続イベントを参照してください。

  • 各リモート・テーブルの begin_download スクリプトと end_download スクリプトには、更新される個々のローには依存しない論理が保持されます。

  • タイムスタンプベースのダウンロードの場合は、last_download_timestamp パラメータを指定して、最後の同期以降の変更のみがダウンロードされるようにします。たとえば、download_cursor または download_delete_cursor SQL スクリプトには次の行を挿入できます。

    WHERE Customer.last_modified >= {ml s.last_table_download}

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

  • ダウンロードでは、挿入と更新が区別されません。download_cursor イベントに対応するスクリプトは、ダウンロードされるローを定義する SELECT 文です。クライアントは、ローが存在するかどうかを調べ、適切な挿入操作または更新操作を実行します。

  • 参照整合性違反を避けるために必要であれば、ダウンロード処理の最後にクライアントは自動的にローを削除します。

警告

以前の展開によって作成されたシャドー・テーブルを同期しないでください (たとえば、_mod または _del で終わるテーブルを同期しないでください)。これらのテーブルが必要になるのは、変更または削除されたローを統合データベースで追跡する場合のみです。

参照整合性と同期を参照してください。


download_cursor スクリプトの作成
download_delete_cursor スクリプトの作成