Wie liste ich in PostgreSQL alle Einschränkungen (Primärschlüssel, Prüfung, eindeutige gegenseitige Ausschließlichkeit, ..) einer Tabelle auf?
\d+ tablename
in psql
Wie liste ich in PostgreSQL alle Einschränkungen (Primärschlüssel, Prüfung, eindeutige gegenseitige Ausschließlichkeit, ..) einer Tabelle auf?
\d+ tablename
in psql
Antworten:
Einschränkungen können über abgerufen werden pg_catalog.pg_constraint
.
SELECT con.*
FROM pg_catalog.pg_constraint con
INNER JOIN pg_catalog.pg_class rel
ON rel.oid = con.conrelid
INNER JOIN pg_catalog.pg_namespace nsp
ON nsp.oid = connamespace
WHERE nsp.nspname = '<schema name>'
AND rel.relname = '<table name>';
Ersetzen Sie <schema name>
durch den Namen Ihres Schemas und <table name>
durch den Namen Ihrer Tabelle.
pg_catalog.pg_constraint
keine NOT NULL
Einschränkungen enthalten sind.
In der psql
Befehlszeile befinden sich diese Informationen im Tabellenblatt, das mit dem \d+
Befehl abgerufen wurde . d+
informiert auch über die NOT NULL
Einschränkungen, die in der pg_catalog.pg_constraint
Tabelle nicht vorhanden sind . Ein Beispiel:
# \d+ observations.stream
Table "observations.stream"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
--------+-------------------+-----------+----------+---------+----------+--------------+---------------------------------------------
id | integer | | not null | | plain | |
name | character varying | | not null | | extended | | This should be a table in the import schema
min_id | integer | | not null | | plain | |
about | character varying | | not null | | extended | |
Indexes:
"stream_pkey" PRIMARY KEY, btree (id)
"stream_name_key" UNIQUE CONSTRAINT, btree (name)
Check constraints:
"stream_id_check" CHECK (id > 0)
Referenced by:
TABLE "profile" CONSTRAINT "profile_id_stream_fkey" FOREIGN KEY (id_stream) REFERENCES stream(id)
Die Einschränkung hierbei ist, dass Sie auf diese Weise nicht die Namen aller Einschränkungen erhalten.