web-dev-qa-db-fra.com

Comment lister toutes les contraintes d'une table dans PostgreSQL?

Comment lister toutes les contraintes (clé primaire, vérification, exclusivité mutuelle unique, ..) d'une table dans PostgreSQL?

39
Thirumal

Les contraintes peuvent être récupérées via 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>';

Remplacer <schema name> avec le nom de votre schéma et <table name> avec le nom de votre table.

42
sticky bit

Dans la ligne de commande psql, ces informations se trouvent dans la feuille de tableau, obtenue avec le \d+ commande. d+ informe également sur le NOT NULL contraintes, quelque chose qui n'est pas présent dans le pg_catalog.pg_constraint table. Un exemple:

# \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)

La mise en garde ici est que vous n'obtenez pas les noms de toutes les contraintes de cette façon.

10
Luís de Sousa