You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从information_schema获取PostgreSQL检查约束的列名

获取指定表的CHECK约束基础信息

可以通过以下查询获取指定表的检查约束类型、约束名称、表名以及约束条件(check_clause):

SELECT tc.constraint_type, tc.constraint_name, tc.table_name, cc.check_clause
FROM information_schema.table_constraints tc 
JOIN information_schema.check_constraints cc ON cc.constraint_name = tc.constraint_name 
WHERE tc.table_name = $1 and tc.constraint_type = 'CHECK'

constraint_column_usage的局限性

从information_schema.constraint_column_usage中可以获取PRIMARY或UNIQUE约束对应的关联列,但无法获取CHECK约束的关联列,示例查询如下:

SELECT * FROM information_schema.constraint_column_usage  where table_name = $1

获取CHECK约束关联列的最终方案

调整查询逻辑后,可实现获取CHECK约束关联列名的需求,最终SQL如下:

SELECT
ccu.table_schema,
ccu.table_name,
ccu.constraint_name,
ccu.column_name,
cc.check_clause
FROM information_schema.constraint_column_usage ccu
JOIN information_schema.check_constraints cc ON ccu.constraint_name = cc.constraint_name
WHERE ccu.constraint_name IN
(
   SELECT
   constraint_name
   FROM information_schema.check_constraints
)
AND ccu.table_name = $1;

内容的提问来源于stack exchange,提问作者jmc42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 23:40:19