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 技术 » MobiLink 同步 » 同步过程

 

参照完整性与同步

除用于 BlackBerry 或 J2SE 的 UltraLite 以外,所有 MobiLink 客户端在将下载项并入远程数据库时都将实施参照完整性。

缺省情况下,MobiLink 客户端会自动删除所有违反参照完整性的行,而非放弃下载事务。

此功能包括以下优点:

  • 同步脚本中的防错保护。由于脚本的灵活性,有可能意外地将破坏远程数据库完整性的行下载下来。MobiLink 客户端可自动保持参照完整性,无需干预。

  • 可以使用该参照完整性机制有效地从远程数据库中删除信息。MobiLink 客户端只将删除发送给父记录,从而自动移除所有的子记录。这将大大降低 MobiLink 必须发送给远程数据库的通信量。

如果 MobiLink 客户端必须显式删除行以保持参照完整性,它会如下所述提供通知:

  • 对于 SQL Anywhere 客户端,dbmlsync 将在日志中写入一个条目。同时还有 dbmlsync 事件挂接供您使用。 请参见:

  • 对于 UltraLite 客户端,将引发 SQLE_ROW_DELETED_TO_MAINTAIN_REFERENTIAL_INTEGRITY 警告。此警告以表名为参数。为了保持参照完整性,每删除一行都将引发此警告。如果您希望同步仍然继续,应用程序可以忽略警告。如果希望显式处理警告,可以使用错误回调函数来捕获它们,例如,计算将删除的行数。

    在引发警告时,如果要放弃同步,则必须执行同步观察器,然后从错误回调函数给观察器发信号(或者通过一个全局变量)。这种情况下,将会在下次调用观察器时放弃同步。

 在事务结束时检查参照完整性
 示例
 更改缺省行为