Problem:
Du vill hitta namnen på begränsningarna i en tabell i PostgreSQL.
Exempel:
Vi vill visa namnen på begränsningarna 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';
Här är resultatet:
conname | contype |
---|---|
student_age_check | c |
student_pkey | p |
student_personlig_nummernyckel | u |
student_country_id_fkey | f |
Diskussion:
För att hitta namnet på en begränsning i PostgreSQL, använd vyn pg_constraint
i pg_catalog
schema. Gå med i vyn pg_catalog.pg_constraint
med vyn pg_class
(JOIN pg_class t ON t.oid = c.conrelid
) och använd relname
kolumn för att filtrera begränsningarna efter tabellnamn. I vårt exempel väljer vi begränsningarna från tabellen student
(WHERE t.relname ='student'
).
Välj kolumner conname
och contype
för att se begränsningsnamnet tillsammans med begränsningstypen. I kolumnen contype
, värdet 'p' är för en primärnyckel, 'f' är för en främmande nyckel, 'u' är för UNIQUE
begränsning, och 'c' är för CHECK
begränsning.
Till exempel kan du se begränsningen som heter student_pkey
för primärnyckeln i student
tabell. contype
kolumnen berättar vilken typ av begränsningen, som för primärnyckeln är p
. conname
kolumnen i den här vyn berättar också om tabellen som innehåller denna begränsning.