it-swarm.com.de

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

Wie liste ich alle Einschränkungen (Primärschlüssel, Prüfung, eindeutige gegenseitige Ausschließlichkeit, ..) einer Tabelle in PostgreSQL auf?

39
Thirumal

Einschränkungen können über 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> mit dem Namen Ihres Schemas und <table name> mit dem Namen Ihrer Tabelle.

42
sticky bit

In der Befehlszeile psql befinden sich diese Informationen im Tabellenblatt, das mit dem Befehl \d+ Abgerufen wird. d+ Informiert auch über die NOT NULL - Einschränkungen, die in der Tabelle pg_catalog.pg_constraint 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 hier ist, dass Sie auf diese Weise nicht die Namen aller Einschränkungen erhalten.

10
Luís de Sousa