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 [模型] 模式 » [映射] 选项卡

 

[映射]:表映射

[表映射] 窗格中,每个远程表对应一行。如果选择了统一数据库,则远程表即会被映射,且映射方向为 [双向]、[只上载到统一的] 或 [只下载到远程]。

这些列中的值即为您在 [创建同步模型向导] 中选择的值,如果未进行选择,则为该向导的缺省值。通过编辑此表,可逐个表对应地修改这些值。

[表映射] 窗格包含以下各列。

[顺序] 列   此列无标题。它为表中的网格编号。如果更改这些表的排序(通过单击列标题),网格编号不会因重新排序而更改。如果一个远程表已被添加、标记为要删除或者被修改,则此列中会出现图标。

[状态] 列   此列通知您表映射是否存在错误、警告或信息性消息。如果此列中出现图标,则选择表映射,然后打开 [详细信息] 窗格中的 [状态] 选项卡查看消息内容。

[远程表] 列   这是远程数据库中您在同步的远程表。远程表所有者的名称括在括号中。

右击 [表映射] 窗格中的行并选择 [删除],可将远程表标记为要删除。在保存模型时,将删除该远程表。删除远程表意味着在您部署到新的远程数据库时不会创建该表。请参见修改处理删除的方式

可使用 [创建新远程表] 窗口添加远程表。请参见修改模型创建的远程数据库

[映射方向] 列   同步的方向。方向可以是 [未同步]、[双向]、[只下载到远程] 或 [只上载到统一的]。

如果表映射方向为 [未同步],则该表仍是远程数据库模式的一部分。当部署模型时,会在远程数据库上创建表,但不会有任何信息与其同步。请参见修改表映射和列映射

如果您不希望在远程数据库创建表,则将其从模型中删除。请参见修改处理删除的方式

[统一表] 列   这是要与对应的远程表同步的统一表。同步会在这些表和 [远程表] 列中的表之间进行。单击列并从统一表的列表中选择其它的表,可更改统一表。

查看 [详细信息] 窗格中的 [列映射] 选项卡,来检查所选表远程列与统一列的映射情况。

[下载类型] 列   可在 [详细信息] 窗格的 [下载类型] 选项卡中查看和修改其实现。此列中的选项有:

  • 时间戳   仅当数据自上次下载后发生变化时,才下载数据。当使用基于时间戳的下载时,每个统一表均必须具有一个时间戳列,以跟踪何时对行进行更改。通过将某列添加到统一数据库表或通过创建影子表,可完成此工作。影子表是由基表的所有者创建的。选择 [时间戳] 时,即为您生成必需的对象。请参见基于时间戳的下载

  • 快照   每次同步时都会下载统一表中的所有数据,即使已经下载过的数据也不例外。请参见快照同步

  • 自定义   编写自己的 download_cursor 和 download_delete_cursor 脚本,以代替自动生成的脚本。可在 [事件] 选项卡上完成此工作。请参见编写 download_cursor 脚本编写 download_delete_cursor 脚本

[下载删除] 列   如果选中此复选框,在统一数据库上删除的数据也会在远程数据库上删除。

如果使用基于时间戳的同步并且选择此列,则需要记录在统一数据库上进行的删除。有两种方法可实现这一点:使用影子表(缺省值)或者使用逻辑删除。在 [详细信息] 窗格中,打开 [下载删除] 选项卡,以查看和修改实现情况。

如果正在使用快照下载并且已经选择此列,远程数据库中所有的现有行会在添加下载的行之前被删除。

如果下载类型为 [自定义],则不能选择此选项。这种情况下,必须编写自己的 download_delete_cursor 脚本。可在 [详细信息] 窗格中的 [事件] 选项卡上完成此工作。

[下载子集] 列   此列中的选项有:

  •    将相同的数据下载到每个远程数据库。

  • 用户   每个同步用户(也称作 MobiLink 用户)仅下载用户名与同一个表或直接连接的表中的某个列相匹配的行。可在 [详细信息] 窗格的 [下载子集] 选项卡上查看或修改其实现。

  • 远程   每个远程数据库仅下载其远程 ID 与同一表中或者直接连接的表中的列匹配的行。可在 [详细信息] 窗格的 [下载子集] 选项卡上查看或修改其实现。

  • 自定义   仅当下载游标 WHERE 子句中 SQL 表达式为 true 时,每个同步才下载行。在需要多个连接或者在下载游标 WHERE 子句中需要特定业务逻辑时,此选项很有用。可在 [详细信息] 窗格的 [下载子集] 选项卡上查看或修改此表达式。

[冲突检测] 列   此列中的选项有:

  •    始终应用已上载的更新而不检查冲突。通过此选项可获得最佳性能。

  • 基于行   如果自从上次同步以来已在远程和统一数据库中队行进行了更新,则将检测冲突。

  • 基于列   如果远程数据库和统一数据库中行的相同列都已更新,才会检测到冲突。否则,将仅应用已上载列的更新。如果表中包含 BLOB 列,则改用基于行的冲突检测。

请参见检测冲突

[冲突解决] 列   此列中的选项有:

  • 统一   先入优先。如果上载更新存在冲突,它们将被拒绝。

  • 远程   后入优先。始终应用上载更新。将此选项仅用于基于列的检测;否则,请禁用冲突检测,这样可获得相同的结果,但性能更佳。

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

  • 自定义   编写自己的 resolve_conflict 脚本,而不是自动生成这些脚本。可在 [事件] 选项卡上完成此工作。

请参见解决冲突