Jeśli chcesz tylko pełną nazwę (rodzaj i schematu) i uporządkowany wykaz wszystkich etykiet enum
, zapytanie to zrobi:
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;
Powroty:
schema | typname | enum_labels
--------+--------------+-------------
public | my_enum_type | foo|bar
string_agg()
wymaga systemu Postgres 9.0 lub nowszego, należy zastąpić go array_agg()
dla starszych wersji.
Aby uzyskać SQL CREATE
oświadczenie, można użyć pg_dump
i zajrzeć do pliku zrzutu.
Albo, o wiele bardziej praktycznym, użyj pgAdmin, który wyświetla odwrócone inżynierskie SQL, twórz skrypty dla dowolnego obiektu w bazie danych. Wybierz go w numerze object browser
, a jego skrypt tworzenia zostanie wyświetlony w SQL pane
. Istnieje nawet opcja automatycznego skopiowania skryptu do nowo otwartego okna SQL editor
, gdzie można go edytować i uruchamiać.
Nie rozumiem znaczenia "Używasz \ dD dla domen." –
Domeny i typy to różne rzeczy. Używasz \ dD dla domen i \ dT dla typów. –
Ok, widzę. "Domena jest zasadniczo typem danych z opcjonalnymi ograniczeniami (ograniczenia dotyczące dozwolonego zestawu wartości)." –