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.