2024 年 9 月 26 日: PostgreSQL 17 发布!
支持的版本:当前 (17) / 16 / 15 / 14 / 13 / 12
开发版本:devel
不受支持的版本: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

51.13. pg_constraint #

目录 pg_constraint 存储表上的检查约束、主键约束、唯一约束、外键约束和排除约束,以及域上的非空约束。(列约束没有特殊对待。每个列约束都等效于某些表约束。)关系上的非空约束在 pg_attribute 目录中表示,而不是在这里。

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

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

表 51.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

约束默认是否被延迟?

convalidated bool

约束是否已验证?目前,仅对于外键和 CHECK 约束可以为 false

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 = 设置为空,d = 设置为默认值

confdeltype char

外键删除操作代码:a = 无操作,r = 限制,c = 级联,n = 设置为空,d = 设置为默认值

confmatchtype char

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

conislocal bool

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

coninhcount int2

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

connoinherit bool

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

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)

如果为排除约束,则为每个列排除运算符的列表

conbin pg_node_tree

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


在排除约束的情况下,conkey 仅适用于作为简单列引用的约束元素。对于其他情况,conkey 中会出现零,并且必须参考关联的索引来发现受约束的表达式。(因此,conkeypg_index.indkey 对于索引具有相同的內容。)

注意

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

提交更正

如果您在文档中发现任何不正确的内容,与您对特定功能的体验不符,或者需要进一步说明,请使用 此表格 报告文档问题。