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

SQL Anywhere 12.0.1 » MobiLink - 服务器管理 » MobiLink 服务器技术 » 同步技术

 

删除

从统一数据库删除行时,必须存在该行的记录,以便 download_delete_cursor 显式选中该行,并从含有该行的远程数据库中显式删除。可以使用逻辑删除或影子表两种方法来执行此操作。

  • 逻辑删除   使用此方法时,行并未删除。在状态列中将不再需要的数据标记为非活动。必须在 download_cursor 和 download_delete_cursor 的 WHERE 子句和多数应用程序查询中引用该行的状态。

    CustDB 示例应用程序使用了此技术,该示例在 ULEmpCust.action 列中使用 D 表示 [删除]。脚本使用该值从远程数据库中删除记录,并在同步完成时从统一数据库中删除记录。CustDB 在 ULOrder 表中也使用了此技术,Contact 示例则在 Customer、Contact 和 Product 表中使用了此技术。

    MobiLink 同步模型支持逻辑删除,它会假定逻辑删除列仅存在于统一数据库中而不在远程数据库中。在将统一模式复制到新的远程模式时,将忽略所有与模型的同步设置中的逻辑删除列相匹配的列。对于新模型,缺省列名称为 deleted

    将逻辑删除列名称添加至远程模式:

    1. 在 [下载删除] 页面的 [创建同步模型向导] 中,单击 [使用逻辑删除]。

    2. 重命名逻辑删除列,以使其不与统一数据库中的任何列名称相匹配。

    3. 完成向导后,更新远程模式并保留缺省表选择。逻辑删除列名称将出现在模式更改列表中,并将被添加到远程模式中。

    注意

    您需要设置列映射,将远程数据库的逻辑删除列映射到统一数据库的逻辑删除列。

  • 影子表   使用此方法时,将创建一个影子表来存储被删除的行的主键值。删除一行后,触发器将填充影子表。download_delete_cursor 可以使用影子表从远程数据库中删除行。影子表只需要包含真实表中的主键列。

 另请参见

暂停删除同步