查询PostgreSQL中外键匹配类型的存储表及字段
PostgreSQL外键匹配类型的存储位置
嘿,这个问题问得很精准!在PostgreSQL中,外键的匹配类型(MATCH FULL、MATCH PARTIAL、MATCH SIMPLE)信息存储在系统表pg_constraint的conmatchtype字段里。
字段取值说明
这个字段用单个字符来表示匹配类型:
's'对应 MATCH SIMPLE(这是PostgreSQL外键的默认匹配类型)'f'对应 MATCH FULL'p'对应 MATCH PARTIAL
查询示例
如果你想查看某个表的所有外键及其匹配类型,可以用下面的SQL查询(记得替换成你的schema和表名):
SELECT conname AS foreign_key_name, -- 获取完整的约束定义文本 pg_get_constraintdef(c.oid) AS constraint_definition, -- 把字符映射为易读的匹配类型名称 CASE conmatchtype WHEN 'f' THEN 'MATCH FULL' WHEN 'p' THEN 'MATCH PARTIAL' WHEN 's' THEN 'MATCH SIMPLE' END AS match_type FROM pg_constraint c -- 关联到表信息 JOIN pg_class t ON c.conrelid = t.oid -- 关联到schema信息 JOIN pg_namespace n ON t.relnamespace = n.oid WHERE contype = 'f' -- 只筛选外键约束 AND n.nspname = 'public' -- 替换为你的目标schema AND t.relname = 'your_target_table'; -- 替换为你的目标表名
顺便提一句,pg_constraint是PostgreSQL存储所有约束(主键、外键、唯一约束等)元数据的核心系统表,你能从这里获取到约束的几乎所有关键信息。
内容的提问来源于stack exchange,提问作者Igor
相关产品推荐
相关产品推荐

