问题
关系的主键可以基于地理数据库维护的 GlobalID、应用程序或客户维护的主键或者地理数据库维护的 objectid。 在某些用例中,当关系的主键基于 objectid (OID) 列时,可能会错误地同步涉及关系的编辑内容。
注: 本文仅适用于 ArcGIS 9.x 版本。 更高版本的 ArcGIS 可能包含不同的功能,对于菜单、命令和地理处理工具,可能具有不同的名称和位置。
以下是一个错误地同步编辑内容的示例用例。
考虑一个示例,其中双向复本中存在 poles 要素类和 transformers 表。 在此示例中,poles 和 transformers 之间存在简单关系类。 Poles 为源类,主键为其 objectid 列。 Transformers 为目标类,外键为长整型列 poleid。
下面将介绍一个未正确同步关系的用例。
如果在最初创建了电线杆和变压器的同一编辑内容生成中进行了用于在电线杆和变压器之间创建关系的编辑内容,则上述示例将正常运行。 例如,如果在步骤 3 中的同步之前已创建该关系。 同步算法将记录创建时电线杆 objectid 的变化,并使用其以正确更新变压器中的外键。
有关正确同步编辑内容的用例的注意事项:
正确同步编辑内容的用例对应于具有关联要素的注记的常见工作流,这些注记基于作为主键的 objectid。 最常见的工作流涉及在同一编辑会话中创建要素及其链接的注记。 为要素创建注记后,其与该要素的关系在后续编辑内容中将不会更改。 并非所有涉及关联要素的注记的工作流都受支持。 例如,不支持在不涉及创建要素的生成中为要素创建新的相关注记。 受支持的工作流依赖于 ArcGIS 9.2 Service Pack 5。
在某些用例中(请参阅以上“描述”部分),当关系的主键基于 objectid (OID) 列时,涉及关系的编辑内容可能会错误地与双向复制和单向复制同步。
此问题已在 ArcGIS 9.2 Service Pack 6 和 ArcGIS 9.3 中得到解决。 以下 ArcGIS 9.2 Service Pack 6 patch 和 ArcGIS 9.3 Service Pack 1 中还解决了其他情况。
此外,当使用在所有数据库中唯一的 GlobalID 列或客户定义的主键(例如 EquipmentID)作为关系中的主键以编辑并同步与双向和单向复本的关系时,也不会遇到此问题。
在以上错误同步编辑内容的示例中,已使用 poles 中的 globalid 列作为主键,transformers 中的 guid 列为外键来定义关系类。 使用 globalid 作为主键的关系类需要 guid 列作为外键。 在此用例中,由于复本之间的 globalid 和 guid 值相同,因此已正确同步该关系。
从 ArcGIS 专家处获得帮助
下载 Esri 支持应用程序