Se si desidera solo il nome completo (nome del tipo e lo schema) e un elenco ordinato di tutti i enum
etichette, questa query farà:
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;
Ritorni:
schema | typname | enum_labels
--------+--------------+-------------
public | my_enum_type | foo|bar
string_agg()
richiede Postgres 9.0 o successivo, sostituirlo con array_agg()
per le versioni precedenti.
Per ottenere il CREATE
istruzione SQL, è possibile utilizzare pg_dump
e guardare il file dump.
Oppure, molto più praticamente, utilizzare pgAdmin che visualizza SQL con reverse engineering per creare script per qualsiasi oggetto nel database. Selezionalo nello object browser
e il relativo script di creazione viene visualizzato nello SQL pane
. Esiste anche un'opzione per copiare lo script in una nuova finestra dello SQL editor
automaticamente, dove è possibile modificarlo ed eseguirlo.
fonte
2012-03-04 21:19:59
Non capisco la rilevanza di "Si utilizza \ dD per i domini". –
I domini e i tipi sono cose diverse. Utilizza \ dD per domini e \ dT per tipi. –
Ok, capisco. "Un dominio è essenzialmente un tipo di dati con vincoli opzionali (restrizioni sul set di valori consentito)." –