我想获取所有约束的列表,它们的表和它们的列,例如
constraint | table | columns
------------------------------|-------|---------------
table1_colum1_colum2_key table1 {colum1, colum2}
这怎么办?
答案 0 :(得分:1)
可以通过pg_constraint
查询约束。表包含在pg_class
中,列包含在pg_attributes
中。架构位于pg_namespace
中。
以下内容可能对您有用。
SELECT con.conname "constraint",
concat(nsp.nspname, '.', rel.relname) "table",
(SELECT array_agg(att.attname)
FROM pg_attribute att
INNER JOIN unnest(con.conkey) unnest(conkey)
ON unnest.conkey = att.attnum
WHERE att.attrelid = con.conrelid) "columns"
FROM pg_constraint con
INNER JOIN pg_class rel
ON rel.oid = con.conrelid
INNER JOIN pg_namespace nsp
ON nsp.oid = rel.relnamespace;