Postgres 检查约束定义

时间:2021-06-16 08:41:47

标签: postgresql

我想编写一个查询来列出数据库中的 check constraints 及其约束定义。 我无法找到一列来查找检查约束定义,就像 search condition oracle 表中的 all_constraints 列一样。 有 PG 替代品吗?

1 个答案:

答案 0 :(得分:1)

目录 pg_constraint 存储表上的检查、主键、唯一键、外键和排除约束,contype 列保存有关约束类型 i,e 的数据

c = check constraint
f = foreign key constraint
p = primary key constraint
u = unique constraint
t = constraint trigger
x = exclusion constraint

select pgc.conname as constraint_name,
       ccu.table_schema as table_schema,
       ccu.table_name,
       ccu.column_name,
       pg_get_constraintdef(pgc.oid) 
from pg_constraint pgc
join pg_namespace nsp on nsp.oid = pgc.connamespace
join pg_class  cls on pgc.conrelid = cls.oid
left join information_schema.constraint_column_usage ccu
          on pgc.conname = ccu.constraint_name
          and nsp.nspname = ccu.constraint_schema
where contype ='c'
order by pgc.conname;