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 用 SQL Anywhere クライアント » SQL Anywhere クライアントのイベント・フック

 

sp_hook_dbmlsync_download_table_end

このストアド・プロシージャを使用して、各テーブルがダウンロードされた直後にカスタム・アクションを追加します。

#hook_dict テーブルのロー

名前

説明

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;