Postgresql 中文操作指南
53.13. pg_constraint #
目录 pg_constraint 存储对表上的检查、主键、唯一键、外键和排他约束。(列约束没有被特殊处理。每个列约束等同于某个表约束。)非空约束表示为 pg_attribute 目录,不在此处。
用户定义的约束触发器(使用 CREATE CONSTRAINT TRIGGER 创建)也会导致在此表中生成一个条目。
此处也存储了域上的检查约束。
Table 53.13. pg_constraint Columns
Column Type Description |
oid oid Row identifier |
conname name 约束名称(不一定唯一!) |
connamespace oid (引用 pg_namespace . oid )包含此约束的名称空间的 OID |
contype char c = 检查约束, f = 外键约束, p = 主键约束, u = 唯一约束, t = 约束触发器, x = 排他约束 |
condeferrable bool 约束是否可推迟? |
condeferred bool 默认情况下约束会被延迟吗? |
convalidated bool 该约束已被验证吗?目前,只有外键和 CHECK 约束可以为 false |
conrelid oid (references pg_class . oid )此约束所在的表;如果不是表约束,则为零 |
contypid oid (references pg_type . oid )此约束所在的域;如果不是域约束,则为零 |
conindid oid (references pg_class . oid )如果该约束是唯一约束、主键、外键或排除约束,则支持此约束的索引;否则为零 |
conparentid oid (references pg_constraint . oid )如果该约束是对分区进行约束,则这是父级分区表的对应约束;否则为零 |
confrelid oid (references 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[] (references pg_attribute . attnum )如果是一个表约束(包括外键但不含约束触发器),受约束的列的列表 |
confkey int2[] (references pg_attribute . attnum )如果是一个外键,引用的列的列表 |
conpfeqop oid[] (references pg_operator . oid )如果是一个外键,PK = FK 比较中的等式运算符的列表 |
conppeqop oid[] (references pg_operator . oid )如果是一个外键,PK = PK 比较中的等式运算符的列表 |
conffeqop oid[] (references pg_operator . oid )如果是一个外键,FK = FK 比较中的等式运算符的列表 |
confdelsetcols int2[] (references pg_attribute . attnum )如果一个外键具有 SET NULL 或 SET DEFAULT 删除操作,则将更新的列。如果为 null,则会更新所有引用列。 |
conexclop oid[] (参考文献 pg_operator . oid )如果是一个排除约束,则为每列排除运算符列表 |
conbin pg_node_tree 如果是一个检查约束,则该表达式的内部表示。(建议使用 pg_get_constraintdef() 来提取检查约束的定义。) |
对于排除约束, conkey 只对作为简单列引用的约束元素有用。对于其他情况, conkey 中会出现一个零并且必须参考关联索引才能发现受约束的表达式。(因此 conkey 与索引的 pg_index . indkey 中的内容相同。)