Problem:
Sie möchten die Namen der Constraints in einer Tabelle in PostgreSQL finden.
Beispiel:
Wir wollen die Namen der Constraints in der Tabelle student
.
Lösung:
SELECT conname, contype FROM pg_catalog.pg_constraint JOIN pg_class t ON t.oid = c.conrelid WHERE t.relname ='student';
Hier ist das Ergebnis:
conname | Kontyp |
---|---|
student_age_check | c |
student_pkey | p |
student_personal_number_key | du |
student_country_id_fkey | f |
Diskussion:
Um den Namen einer Einschränkung in PostgreSQL zu finden, verwenden Sie die Ansicht pg_constraint
im pg_catalog
Schema. Treten Sie der Ansicht pg_catalog.pg_constraint
mit der Ansicht pg_class
(JOIN pg_class t ON t.oid = c.conrelid
) und verwenden Sie den relname
-Spalte, um die Einschränkungen nach Tabellennamen zu filtern. In unserem Beispiel wählen wir die Constraints aus der Tabelle student
(WHERE t.relname ='student'
).
Wählen Sie die Spalten conname
aus und contype
um den Einschränkungsnamen zusammen mit dem Einschränkungstyp anzuzeigen. In der Spalte contype
, der Wert „p“ steht für einen Primärschlüssel, „f“ steht für einen Fremdschlüssel, „u“ steht für den UNIQUE
Constraint und 'c' steht für CHECK
Einschränkung.
Beispielsweise können Sie die Einschränkung mit dem Namen student_pkey
sehen für den Primärschlüssel im student
Tisch. Der contype
-Spalte gibt Ihnen den Typ der Einschränkung an, der für den Primärschlüssel p
ist . Der conname
Spalte in dieser Ansicht informiert Sie auch über die Tabelle, die diese Einschränkung enthält.