スキーマ内のすべての列挙型とその値を取得する SQL SELECT を作成しました。
SELECT
t.typname, array_agg(e.enumlabel)
FROM pg_type t
JOIN pg_enum e ON t.oid = e.enumtypid
JOIN pg_namespace n ON t.typnamespace = n.oid
WHERE t.typtype = 'e' AND n.nspname = 'public'
GROUP BY typname
選択をビューに入れたので、呼び出すたびに書き込む必要はありません。私が気になる唯一のことは、スキーマの名前を変更するか、別のスキーマで使用する場合、スキーマの名前を手動で書き直す必要があることです。コードの 6 行目を確認してください。
WHERE t.typtype = 'e' AND n.nspname = 'public'
public はハードタイプされています。postgres で選択するとき、どのスキーマから選択したかを示す「グローバル」変数はありますか? 私は何も見つけることができませんでした。
ありがとう
PS: postgres 8.4 を使用しています