您可以使用此存储过程在每个表下载后添加自定义操作。
名称 |
值 |
说明 |
---|---|---|
table name (in) |
表名 |
刚刚对其应用过操作的表。 |
delete count (in) |
行数 |
此表中由下载删除的行数。 |
upsert count (in) |
行数 |
此表中由下载更新或插入的行数。 |
publication_n (in) |
发布 |
正被同步的发布,其中 n 是一个整数。每个正在上载的发布都有一个 publication_n 条目。n 的编号从零开始。 |
MobiLink user (in) |
MobiLink 用户名 |
您正在为其进行同步的 MobiLink 用户。 |
script version (in) |
脚本版本名称 |
将用于同步的 MobiLink 脚本版本。 |
如果以该名称命名的过程存在,则将在对表应用完下载中的所有操作之后立即调用此过程。
此过程的操作将在下载被提交或被回退时被提交或被回退。
假定您使用下面的表记录远程数据库上的同步事件。
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"), ); |
以下示例在下载表之后立即记录 MobiLink 用户、表名和插入或更新的行数。
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 |