Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17

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

confdeltype char

外键删除操作代码:a = 无操作,r = 限制,c = 级联,n = 设置为 null,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 中会出现一个零,并且必须查询相关索引以发现受约束的表达式。(因此,conkey 与索引的 pg_index.indkey 具有相同内容。)

注意

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