Если вам просто нужно полное имя (имя типа и схема) и отсортированный список всех enum
меток, этот запрос будет делать:
SELECT n.nspname AS "schema", t.typname
, string_agg(e.enumlabel, '|' ORDER BY e.enumsortorder) AS enum_labels
FROM pg_catalog.pg_type t
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
JOIN pg_catalog.pg_enum e ON t.oid = e.enumtypid
WHERE t.typname = 'my_enum_type'
GROUP BY 1,2;
Возвращает:
schema | typname | enum_labels
--------+--------------+-------------
public | my_enum_type | foo|bar
string_agg()
требует Postgres 9.0 или новее, замените на array_agg()
для более старых версий.
Чтобы получить оператор SQL CREATE
, вы можете использовать pg_dump
и посмотреть файл дампа.
Или, что гораздо более практично, используйте pgAdmin , который отображает сценарии создания SQL с обратной инженерией для любого объекта в базе данных. Выберите его в object browser
, и сценарий его создания отобразится в SQL pane
. Есть даже возможность автоматически скопировать скрипт во вновь открытое окно SQL editor
, где вы можете отредактировать и выполнить его.