次の疑似コードは、ダウンロード・イベント (イベントと同名のスクリプト) が呼び出される順序の概要を示します。
これらのイベントは、Mobile Link イベントの概要に示す完全なイベント・モデルのダウンロードのロケーションで発生します。
------------------------------------------------------ prepare_for_download ------------------------------------------------------ modify_last_download_timestamp fetch the next download timestamp from consolidated prepare_for_download if( modify_last_download_timestamp script is defined or prepare_for_download script is defined ) { COMMIT } ------------------------------------------------------ download ------------------------------------------------------ begin_download // Connection event. for each table being synchronized { begin_download // Table event. } handle_DownloadData for each table being synchronized { begin_download_deletes for each row in download_delete_cursor { if( all primary key columns are NULL ) { send TRUNCATE to remote } else { send DELETE to remote } } end_download_deletes begin_download_rows for each row in download_cursor { send INSERT ON EXISTING UPDATE to remote } end_download_rows } modify_next_last_download_timestamp for each table being synchronized { if( begin_download table script is called ) { end_download // Table event } } if( begin_download connect script is called ) { end_download // Connection event } for each table being synchronized { download_statistics // Table event. } download_statistics // Connection event. COMMIT |
ダウンロード通知を要求していてもダウンロードの確認をクライアントから受け取らなかった場合、統合データベースではダウンロード・トランザクション全体がロールバックされます。
SQL Anywhere リモートについては、SendDownloadACK (sa) 拡張オプションを参照してください。Ultra Light リモートについては、Send Download Acknowledgement 同期パラメータを参照してください。
ダウンロード・ストリームでは、挿入と更新が区別されません。download_cursor イベントに対応するスクリプトは、ダウンロードされるローを定義する SELECT 文です。クライアントは、ローが存在するかどうかを調べ、適切な挿入操作または更新操作を実行します。
ダウンロード処理の最後に、クライアントは自動的に参照整合性に違反するローを削除します。
参照整合性と同期を参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |