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 模型 » 模型模式

 

修改冲突检测和冲突解决

如果在远程数据库和统一数据库中均更新某行,则下次同步数据库时会发生冲突。

可使用以下选项来检测冲突:

  • 无冲突检测   如果不希望有任何冲突检测,请选择此选项。应用已上载的更新而不检查冲突。这样就不必从统一数据库读取当前的行值,因此同步更新的速度可能会更快。

  • 基于行的冲突检测   如果自上次同步后行已由远程和统一数据库更新,则会检测到冲突。

    此选项定义 upload_fetch 和 upload_update 脚本。请参见使用 upload_fetch 脚本检测冲突

  • 基于列的冲突检测   如果远程数据库和统一数据库中行的相同列都已更新,则会检测到冲突。

    此选项定义 upload_fetch_column_conflict 脚本。请参见使用 upload_fetch 脚本检测冲突

    如果表中包含 BLOB 且选择 [基于列的冲突检测],则使用 [基于行的冲突检测]。

可使用以下选项来解决冲突:

  • 统一   先入优先:拒绝存在冲突的上载更新。

  • 远程   后入优先:始终应用上载更新。

    仅在使用基于列的冲突检测时,才使用此选项。否则,如果您选择无冲突检测,可获得同样的结果和更佳的性能。

  • 时间戳   最新的更新优先。要使用此选项,您必须为表创建和维护时间戳列。此时间戳列应记录上次更改行的时间。该列在统一数据库和远程数据库中都应存在。远程数据库和统一数据库必须使用相同的时区(首选 UTC)且其时钟必须同步才可正常工作。

  • 自定义   编写自己的 resolve_conflict 脚本。向导完成后,可在 [事件] 选项卡中完成此工作。

    请参见使用 resolve_conflict 脚本解决冲突

♦  自定义冲突检测和冲突解决
  1. 在 [模型] 模式中打开 [映射] 选项卡。

  2. 在 [表映射] 窗格中选择一个远程表。

  3. 在 [冲突检测] 下拉列表中,选择 []、[基于行] 或 [基于列]。如果选择 [],则操作到此结束。

  4. 如果选择了 [基于行] 或 [基于列],请从 [冲突解决] 下拉列表中选择 [统一]、[远程]、[时间戳] 或 [自定义]。

  5. 如果选择 [时间戳] 冲突解决,请打开下部窗格中的 [冲突解决] 选项卡,然后输入要使用的时间戳列的名称。

  6. 如果选择 [自定义] 冲突解决,请打开 [事件] 选项卡,然后为此表编写 resolve_conflict 脚本。

另请参见