pg_enum
pg_enum
カタログは、各列挙型についてその値とラベルを示す項目を含みます。
ある与えられた列挙値の内部表現は、実際にはpg_enum
内の関連付けられた行のOIDです。
表50.20 pg_enum
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
oid | oid | 行識別子(隠し属性です。明示的に選択しなければなりません) | |
enumtypid | oid |
| この列挙値を所有しているpg_type 項目のOID |
enumsortorder | float4 | 列挙型におけるこの列挙値のソート位置 | |
enumlabel | name | この列挙値のテキストラベル |
pg_enum
行のOIDは次のような特別な規則に従います。
列挙型のソート順序と同じ順序で並んだ偶数のOIDが保証されています。
つまり、2つの偶数のOIDが同じ列挙型に属する場合、OIDの小さい方がより小さいenumsortorder
値を持たなければなりません。
奇数のOID値はソート順序に関連を持ってはなりません。
この規則により列挙の比較処理は多くの一般的な場合でカタログの検索を防ぐことができます。
列挙型の作成および変更を行う処理は、可能であれば偶数のOIDを列挙値に割り当てようとします。
列挙型を作成する時、そのメンバには1..n
のソート順位置が割り当てられます。
しかし後で追加されたメンバには負もしくはenumsortorder
の小数値が与えられる可能性があります。
これらの値の要件は、各列挙型の中で正しく順序付けされ、かつ一意であることだけです。