2025年9月25日: PostgreSQL 18 发布!
支持的版本: 当前 (18) / 17 / 16 / 15 / 14 / 13
开发版本: devel
不支持的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3

52.13. pg_constraint #

目录 pg_constraint 存储表上的检查、非空、主键、唯一、外键和排除约束。(列约束不被特殊对待。每个列约束都等价于某个表约束。)

用户定义的约束触发器(使用 CREATE CONSTRAINT TRIGGER 创建)也会在此表中产生一个条目。

域上的检查约束也存储在这里。

表 52.13. pg_constraint

列 类型

描述

oid oid

行标识符

conname name

约束名称(不一定唯一!)

connamespace oid(引用 pg_namespace.oid

包含此约束的命名空间的 OID

contype char

c = 检查约束,f = 外键约束,n = 非空约束,p = 主键约束,u = 唯一约束,t = 约束触发器,x = 排除约束

condeferrable bool

约束是否可延迟?

condeferred bool

约束是否默认延迟?

conenforced bool

约束是否已强制执行?

convalidated bool

约束是否已验证?

conrelid oid(引用 pg_class.oid

此约束所在的表;如果不是表约束,则为零

contypid oid(引用 pg_type.oid

此约束所在的域;如果不是域约束,则为零

conindid oid(引用 pg_class.oid

支持此约束的索引,如果它是唯一、主键、外键或排除约束;否则为零

conparentid oid(引用 pg_constraint.oid

如果这是分区上的约束,则为父分区表对应的约束;否则为零

confrelid oid(引用 pg_class.oid

如果是外键,则为引用的表;否则为零

confupdtype char

外键更新操作代码:a = 不执行操作,r = 限制,c = 级联,n = 设置为 NULL,d = 设置为默认

confdeltype char

外键删除操作代码:a = 不执行操作,r = 限制,c = 级联,n = 设置为 NULL,d = 设置为默认

confmatchtype char

外键匹配类型:f = 完全,p = 部分,s = 简单

conislocal bool

此约束是为该关系本地定义的。注意,约束可以同时是本地定义和继承的。

coninhcount int2

此约束的直接继承祖先的数量。具有非零祖先数量的约束不能被删除或重命名。

connoinherit bool

此约束是为该关系本地定义的。它是一个不可继承的约束。

conperiod bool

此约束是使用 WITHOUT OVERLAPS(用于主键和唯一约束)或 PERIOD(用于外键)定义的。

conkey int2[](引用 pg_attribute.attnum

如果是表约束(包括外键,但不包括约束触发器),则为受约束列的列表

confkey int2[](引用 pg_attribute.attnum

如果是外键,则为引用的列的列表

conpfeqop oid[](引用 pg_operator.oid

如果是外键,则为 PK = FK 比较的相等运算符列表

conppeqop oid[](引用 pg_operator.oid

如果是外键,则为 PK = PK 比较的相等运算符列表

conffeqop oid[](引用 pg_operator.oid

如果是外键,则为 FK = FK 比较的相等运算符列表

confdelsetcols int2[](引用 pg_attribute.attnum

如果是具有 SET NULLSET DEFAULT 删除操作的外键,则为将要更新的列。如果为 NULL,则将更新所有引用列。

conexclop oid[](引用 pg_operator.oid

如果是排除约束或 WITHOUT OVERLAPS 主键/唯一约束,则为每列排除运算符的列表。

conbin pg_node_tree

如果是检查约束,则为表达式的内部表示。(建议使用 pg_get_constraintdef() 来提取检查约束的定义。)


对于排除约束,conkey 仅对简单的列引用约束元素有用。对于其他情况,conkey 中出现零,并且必须查阅关联的索引以发现被约束的表达式。(因此 conkey 的内容与索引的 pg_index.indkey 的内容相同。)

注意

pg_class.relchecks 需要与该表中每个关系找到的检查约束条目数量一致。

提交更正

如果您在本应正确的信息中发现任何不正确之处,不符合您对特定功能的体验,或需要进一步的澄清,请使用 此表格 来报告文档问题。