Problema:
Vuoi trovare i nomi dei vincoli in una tabella in PostgreSQL.
Esempio:
Vogliamo visualizzare i nomi dei vincoli nella tabella student
.
Soluzione:
SELECT conname, contype FROM pg_catalog.pg_constraint JOIN pg_class t ON t.oid = c.conrelid WHERE t.relname ='student';
Ecco il risultato:
conname | contipo |
---|---|
controllo_età_studente | c |
chiave_studente | p |
chiave_numero_personale_studente | tu |
student_country_id_fkey | f |
Discussione:
Per trovare il nome di un vincolo in PostgreSQL, usa la vista pg_constraint
nel pg_catalog
schema. Unisciti alla vista pg_catalog.pg_constraint
con la vista pg_class
(JOIN pg_class t ON t.oid = c.conrelid
) e usa il relname
colonna per filtrare i vincoli in base al nome della tabella. Nel nostro esempio, selezioniamo i vincoli dalla tabella student
(WHERE t.relname ='student'
).
Seleziona le colonne conname
e contype
per vedere il nome del vincolo insieme al tipo di vincolo. Nella colonna contype
, il valore "p" è per una chiave primaria, "f" è per una chiave esterna, "u" è per UNIQUE
vincolo e 'c' sta per CHECK
vincolo.
Ad esempio, puoi vedere il vincolo denominato student_pkey
per la chiave primaria nello student
tavolo. Il contype
colonna indica il tipo di vincolo, che per la chiave primaria è p
. Il conname
colonna in questa vista ti dice anche della tabella che contiene questo vincolo.