PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

52.20. pg_enum #

pg_enum 目录包含展示每个枚举类型的值和标签的 条目。给定枚举值的内部表示实际上是它在 pg_enum 中关联行的 OID。

Table 52.20. \1 字段列说明

Column Type

Description

oid oid

Row identifier

enumtypid oid (references pg_type.oid)

拥有该枚举值的 pg_type 条目的 OID

enumsortorder float4

该枚举值在其枚举类型内的排序位置

enumlabel name

此枚举值的文本标签


pg_enum 行的 OID 遵循一条特殊的规则: 偶数 OID 保证按照与其枚举类型排序顺序相同的方式排序。 也就是说,如果两个偶数 OID 属于同一个枚举类型, 较小的 OID 必须具有较小的 enumsortorder 值。 奇数 OID 值则不必与排序顺序有任何关系。 这条规则使枚举比较例程在许多常见情况下可以避免目录查找。 创建和更改枚举类型的例程会尽可能为枚举值分配偶数 OID。

枚举类型被创建时,其成员会被分配排序位置 1..n。但后来增加的成员可能被赋予 enumsortorder 的负值或分数值。 对这些值的唯一要求是:它们在每个枚举类型内必须正确排序且唯一。