Wie liste ich alle Einschränkungen einer Tabelle in PostgreSQL auf?


Antworten:


31

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.


1
Beachten Sie, dass pg_catalog.pg_constraintkeine NOT NULLEinschränkungen enthalten sind.
Luís de Sousa,

6

In der psqlBefehlszeile befinden sich diese Informationen im Tabellenblatt, das mit dem \d+Befehl abgerufen wurde . d+informiert auch über die NOT NULLEinschränkungen, die in der pg_catalog.pg_constraintTabelle 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.


Ich sehe Einschränkungsnamen in Ihrer veröffentlichten Ausgabe.
Ypercubeᵀᴹ
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.