PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come trovare il nome di un vincolo in PostgreSQL

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.