Problem:
Du ønsker at finde navnene på begrænsningerne i en tabel i PostgreSQL.
Eksempel:
Vi ønsker at vise navnene på begrænsningerne i tabellen student
.
Løsning:
SELECT conname, contype FROM pg_catalog.pg_constraint JOIN pg_class t ON t.oid = c.conrelid WHERE t.relname ='student';
Her er resultatet:
conname | contype |
---|---|
student_age_check | c |
student_pkey | p |
elev_personligt_nummer_nøgle | u |
student_country_id_fkey | f |
Diskussion:
For at finde navnet på en begrænsning i PostgreSQL skal du bruge visningen pg_constraint
i pg_catalog
skema. Deltag i visningen pg_catalog.pg_constraint
med visningen pg_class
(JOIN pg_class t ON t.oid = c.conrelid
) og brug relname
kolonne for at filtrere begrænsningerne efter tabelnavn. I vores eksempel vælger vi begrænsningerne fra tabellen student
(WHERE t.relname ='student'
).
Vælg kolonner conname
og contype
for at se begrænsningsnavnet sammen med begrænsningstypen. I kolonnen contype
, værdien 'p' er for en primærnøgle, 'f' er for en fremmednøgle, 'u' er for UNIQUE
begrænsning, og 'c' er for CHECK
begrænsning.
For eksempel kan du se begrænsningen med navnet student_pkey
for den primære nøgle i student
bord. contype
kolonne fortæller dig typen af begrænsningen, som for den primære nøgle er p
. conname
kolonnen i denne visning fortæller dig også om tabellen, der indeholder denne begrænsning.