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.