时间戳方法是进行高效下载的最实用的通用技术。此方法将跟踪每个用户上次同步的时间并仅下载在该时刻后更改的行。
前提条件
执行此任务没有前提条件。
上下文和注释
MobiLink 维持一个 TIMESTAMP 值,用来指示每个 MobiLink 用户上次下载数据的时间。此值被称为上次下载时间。
要为表实施基于时间戳的同步,在统一数据库中,添加一个 last_modified 列以保存行的最近修改时间。通常可以按照如下方式声明该列:
DBMS | 最近修改的列 |
---|---|
Adaptive Server Enterprise | datetime
|
IBM DB2 LUW | timestamp NOT NULL GENERATED ALWAYS FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP
|
Microsoft SQL Server | datetime
|
MySQL | timestamp default CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
Oracle | timestamp
|
SQL Anywhere | timestamp DEFAULT timestamp
|
在 download_cursor 和 download_delete_cursor 事件的脚本中,将第一个参数与 TIMESTAMP 列中的值进行比较。
例
下面从 MobiLink Contact 示例中获取的例子说明了如何实施基于时间戳的下载。
表定义:
CREATE TABLE "DBA"."Customer"( "cust_id" integer NOT NULL DEFAULT GLOBAL AUTOINCREMENT, "name" char(40) NOT NULL, "rep_id" integer NOT NULL, "last_modified" timestamp NULL DEFAULT timestamp, "active" bit NOT NULL, PRIMARY KEY ("cust_id") ) |
download_cursor 脚本:
SELECT cust_id, Customer.name, Customer.rep_id FROM Customer KEY JOIN SalesRep WHERE Customer.last_modified >= {ml s.last_table_download} AND SalesRep.ml_username = {ml s.username} AND Customer.active = 1 |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |