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 插件帮助 » [映射] 选项卡

 

[映射]:表映射

对于统一数据库中的表与远程数据库中的表之间的每个表映射,[表映射] 窗格都包含相对应的一行。可以修改、添加或删除表映射。

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

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

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

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

  • [统一表] 列   这是统一数据库中正在同步的表。表所有者的名称括在括号中。仅显示同步的统一表。如果不再需要同步某统一表,可移除它的表的表映射,方法是在 [表映射] 窗格中右键单击对应的行并选择 [删除];或者将 [映射方向] 更改为 [未同步],然后保存模型。

    查看 [详细信息] 窗格中的 [列映射] 选项卡,了解所选表映射中统一列如何映射到远程列。

  • [映射方向] 列   同步的方向。方向可以是 [未同步]、[双向]、[只下载到远程] 或 [只上载到统一的]。下一次保存同步模型时,将删除标记为 [未同步] 的表映射。

  • [远程表] 列   这是要与对应的统一表同步的远程表。单击列并从远程表的列表中选择其它的表,可更改远程表。

    如果未选择远程表,则表映射无效。

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

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

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

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

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

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

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

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

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

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

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

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

      注意

      通常,最好由用户或验证参数进行分区,而不是远程 ID。因为远程计算机重置或被替换时,远程 ID 可能会更改。

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

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

    •    无下载删除子集。

    • 相同   为该子集创建一个与下载子集完全相同的副本。

    • 自定义   创建自定义下载删除子集。

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

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

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

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

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

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

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

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

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

 另请参见