PostgreSQL 地理数据库中的密钥集表

在以下情况下将使用密钥集表来存储一组所选的行:ArcGIS for Desktop 客户端执行使用整型、数值型、日期型或字符串型属性来连接表的地理数据库关系查询。

正如有关 PostgreSQL 的 ArcSDE 日志文件表配置选项中所述,日志文件表存储所选要素的 objectid。密钥集表用于保存使用 objectid 以外的属性的连接。

当数据库查询中的源选择集超过 99 行时,将在每次会话中为每个连接创建一个密钥集表。

ArcGIS for Desktop 中的密钥集表

ArcGIS for Desktop 中无法查看密钥集表。但是,以下操作可创建和填充密钥集表:在 ArcMap 中从某个关系类所涉及的要素类中选择超过 99 条记录,然后打开属性表,并使用“关联表”列表(可从选项菜单访问)检索相关表。启动编辑会话时也会创建密钥集表。

PostgreSQL 数据库中的密钥集表

只有发生以下两种情况之一时,地理数据库中才会出现密钥集表:

发生以上两种情况之一时,密钥集表将创建为全局临时表。第一种情况会创建并填充密钥集表。第二种情况将仅创建密钥集表,而在做出限定选择后才会对其进行填充。

密钥集表名称包含触发密钥集表创建操作的会话的进程标识号。格式如下:

keyset_<process_id>

密钥集表将存储每个选择集的密钥集 ID 号以及确定要素类间关系时所依据的字段的值。

因为密钥集表是临时表,所以在用户与数据库断开连接时会被删除。但您可能会发现,由 PostgreSQL 创建的用来存储该表的临时方案将被保留。它们具有如 pg_temp_3 的名称。

以下是在相关表 LATERALS 与 CONTRACTORS 之间执行选择时创建的密钥集表。在本例中,将对 LONG_VAL 字段进行填充,该字段包含 LATERALS 与 CONTRACTORS 之间的关系类所依据的 CONTRACTOR_ID 字段的值。

PostgreSQL 中的密钥集表和关联的业务表

keyset_<process_id>

以下是 PostgreSQL 中密钥集表的定义:

字段名

字段类型

描述

是否允许为空

keyset_id

integer

密钥集选择标识符

NOT NULL

long_val

integer

关系类所依据的字段的值,前提是该字段为数值字段

str_val

varchar(256)

关系类所依据的字段的值,前提是该字段为字符串字段

dbl_val

double

关系类所依据的字段的值,前提是该字段为双精度字段

date_val

timestamp without time zone

关系类所依据的字段的值,前提是该字段为日期字段

XML 工作空间文档中的密钥集表

密钥集表是一种临时表,因而不存储在 XML 文档中。

相关主题

5/10/2014