このストアド・プロシージャを使用して、各テーブルがダウンロードされた直後にカスタム・アクションを追加します。
名前 |
値 |
説明 |
---|---|---|
table name (in) |
テーブル名 |
操作が直前に適用されたテーブル。 |
delete count (in) |
ローの数 |
ダウンロードによってこのテーブルから削除されたローの数。 |
upsert count (in) |
ローの数 |
ダウンロードによってこのテーブルで更新または挿入されたローの数。 |
publication_n (in) |
パブリケーション名 |
同期されているパブリケーション (n は整数)。アップロードされるパブリケーションごとに 1 つの publication_n エントリがあります。n の番号は 0 から始まります。 |
MobiLink user (in) |
Mobile Link ユーザ名 |
同期対象となる Mobile Link ユーザ。 |
script version (in) |
スクリプト・バージョン名 |
同期に使用される Mobile Link スクリプト・バージョン。 |
この名前のプロシージャが存在する場合、ダウンロードでの操作がすべてテーブルに適用された直後に呼び出されます。
ダウンロードがコミットまたはロールバックされると、このプロシージャのアクションがコミットまたはロールバックされます。
次のテーブルを使用して、リモート・データベース上の同期イベントのログを取るとします。
CREATE TABLE SyncLog ( "event_id" INTEGER NOT NULL DEFAULT AUTOINCREMENT , "event_name" VARCHAR(128) NOT NULL , "ml_user" VARCHAR(128) NULL , "event_time" TIMESTAMP NULL, "table_name" VARCHAR(128) NULL , "upsert_count" VARCHAR(128) NULL , "delete_count" VARCHAR(128) NULL , "exit_code" INTEGER NULL , "status_retval" VARCHAR(128) NULL , "pubs" VARCHAR(128) NULL , "sync_descr " VARCHAR(128) NULL , PRIMARY KEY ("event_id"), ); |
次に、テーブルがダウンロードされた直後に Mobile Link ユーザ、テーブル名、挿入または更新されたローの数のログを取る例を示します。
CREATE PROCEDURE sp_hook_dbmlsync_download_table_end() BEGIN -- declare variables DECLARE tbl VARCHAR(255); DECLARE upsertCnt VARCHAR(255); DECLARE deleteCnt VARCHAR(255); -- load the table name from #hook_dict SELECT #hook_dict.value INTO tbl FROM #hook_dict WHERE #hook_dict.name = 'table name'; -- load the upsert count from #hook_dict SELECT #hook_dict.value INTO upsertCnt FROM #hook_dict WHERE #hook_dict.name = 'upsert count'; -- load the delete count from #hook_dict SELECT #hook_dict.value INTO deleteCnt FROM #hook_dict WHERE #hook_dict.name = 'delete count'; INSERT INTO SyncLog (event_name, ml_user, table_name, upsert_count, delete_count, event_time) SELECT 'download_table_end', #hook_dict.value, tbl, upsertCnt, deleteCnt, CURRENT TIMESTAMP FROM #hook_dict WHERE name = 'MobiLink user' ; END; |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |