如何列出PostgreSQL表中的所有约束(主键,检查,唯一互斥,..)?

评论

链接中的查询是否有用?

psql中的\ d +表名

几乎重复:dba.stackexchange.com/questions/36979/retrieving-all-pk-and-fk/…

#1 楼

可以通过pg_catalog.pg_constraint检索约束。

评论


注意pg_catalog.pg_constraint不包含NOT NULL约束。

–路易斯·德·索萨(Luísde Sousa)
19年7月24日在8:30

#2 楼

psql命令行中,此信息在通过\d+命令获得的表格中。 d+还告知NOT NULL约束,这在pg_catalog.pg_constraint表中不存在。一个例子:

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


这里的警告是,您没有以这种方式获得所有约束的名称。

评论


我在您发布的输出中看到了约束名称。

–超立方体ᵀᴹ
19年7月24日在8:35