PostgreSQL 地理数据库中的密钥集表
在以下情况下将使用密钥集表来存储一组所选的行:ArcGIS for Desktop 客户端执行使用整型、数值型、日期型或字符串型属性来连接表的地理数据库关系查询。
正如有关 PostgreSQL 的 ArcSDE 日志文件表配置选项中所述,日志文件表存储所选要素的 objectid。密钥集表用于保存使用 objectid 以外的属性的连接。
当数据库查询中的源选择集超过 99 行时,将在每次会话中为每个连接创建一个密钥集表。
ArcGIS for Desktop 中的密钥集表
ArcGIS for Desktop 中无法查看密钥集表。但是,以下操作可创建和填充密钥集表:在 ArcMap 中从某个关系类所涉及的要素类中选择超过 99 条记录,然后打开属性表,并使用“关联表”列表(可从选项菜单访问)检索相关表。启动编辑会话时也会创建密钥集表。
PostgreSQL 数据库中的密钥集表
只有发生以下两种情况之一时,地理数据库中才会出现密钥集表:
- 通过 ArcGIS for Desktop 进行限定选择。
- 启动编辑会话。
发生以上两种情况之一时,密钥集表将创建为全局临时表。第一种情况会创建并填充密钥集表。第二种情况将仅创建密钥集表,而在做出限定选择后才会对其进行填充。
密钥集表名称包含触发密钥集表创建操作的会话的进程标识号。格式如下:
keyset_<process_id>
密钥集表将存储每个选择集的密钥集 ID 号以及确定要素类间关系时所依据的字段的值。
因为密钥集表是临时表,所以在用户与数据库断开连接时会被删除。但您可能会发现,由 PostgreSQL 创建的用来存储该表的临时方案将被保留。它们具有如 pg_temp_3 的名称。
以下是在相关表 LATERALS 与 CONTRACTORS 之间执行选择时创建的密钥集表。在本例中,将对 LONG_VAL 字段进行填充,该字段包含 LATERALS 与 CONTRACTORS 之间的关系类所依据的 CONTRACTOR_ID 字段的值。
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 文档中。