Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 入门 » MobiLink 技术简介 » 研究 MobiLink Contact 示例 » 同步 Contact 示例

 

同步 Contact 示例中的客户

Customer 表的同步脚本演示了基于时间戳的同步及行的分区。这两种技术既维护了表数据的一致性,又最大程度减小了同步期间所传送的数据量。

请参见:

业务规则

用于管理客户的业务规则如下:

  • 在远程数据库和统一数据库中都可以修改客户信息。

  • 客户将定期在销售代表之间重新指派。此过程通常称为地域调整。

  • 每个远程数据库中仅包含所指派的客户。

下载
  • download_cursor   以下 download_cursor 脚本只下载自上次成功下载以来信息已经发生更改的活动客户。它还可以按销售代表过滤客户。
    SELECT cust_id, Customer.name, Customer.rep_id
    FROM Customer key join SalesRep
    WHERE Customer.last_modified >= ?
    AND SalesRep.ml_username = ?
    AND Customer.active = 1

  • download_delete_cursor   以下 download_delete_cursor 脚本只下载自上次成功下载以来信息已经发生更改的客户。它会删除标记为非活动和未指派给销售代表的所有客户。
    SELECT cust_id
    FROM Customer key join SalesRep
    WHERE Customer.last_modified >= ?
    AND ( SalesRep.ml_username != ? OR Customer.active = 0 )

    如果从统一数据库 Customer 表中删除了某些行,它们将不会出现在此结果集中,因此也不会从远程数据库中删除。但这些客户会被标记为非活动状态。

    进行地域调整后,此脚本将删除不再指派给该销售代表的那些客户。它还会删除转让给其他销售代表的客户。这些附加删除将被标志为 SQLCODE 100,但并不妨碍同步过程。可以编写更复杂的脚本来只识别那些从当前销售代表转让出去的客户。

    MobiLink 客户端将在远程数据库上执行级联删除,因此该脚本还将删除所有为指派给其他销售代表的客户工作的联系人。

上载

您可以在远程数据库中插入、更新或删除客户信息。与这些操作对应的脚本如下:

  • upload_insert   以下 upload_insert 脚本将在 Customer 表中添加一行,并将客户标记为活动:
    INSERT INTO Customer(
     cust_id, name, rep_id, active )
    VALUES ( ?, ?, ?, 1 )

  • upload_update   以下 upload_update 脚本将在统一数据库中修改客户信息。不对此表执行冲突检测。
    UPDATE Customer
    SET name = ?, rep_id = ?
    WHERE cust_id = ?

  • upload_delete   以下 upload_delete 脚本在统一数据库中将客户标记为非活动。但它不删除行。
    UPDATE Customer
    SET active = 0
    WHERE cust_id = ?