PG_CONSTRAINT
PG_CONSTRAINT系统表存储表上的检查约束、主键和唯一约束。
| 名称 | 类型 | 描述 | 
|---|---|---|
| oid | oid | 行标识符(隐含属性,必须明确选择)。 | 
| conname | name | 约束名称(不一定是唯一的)。 | 
| connamespace | oid | 包含这个约束的名称空间的OID。 | 
| contype | "char" | 
 | 
| condeferrable | boolean | 这个约束是否可以推迟。 
 | 
| condeferred | boolean | 缺省时这个约束是否可以推迟。 
 | 
| convalidated | boolean | 约束是否有效。目前,只有外键和CHECK约束可将其设置为false。 
 | 
| conrelid | oid | 这个约束所在的表,如果不是表约束则为0。 | 
| contypid | oid | 这个约束所在的域,如果不是一个域约束则为0。 | 
| conindid | oid | 与约束关联的索引ID。 | 
| confrelid | oid | 如果是外键,则为参考的表,否则为0。 | 
| confupdtype | "char" | 
       外键更新动作代码。
        
 | 
| confdeltype | "char" | 
       外键删除动作代码。
        
 | 
| confmatchtype | "char" | 
       外键匹配类型。
        
 | 
| conislocal | boolean | 是否是为关系创建的本地约束。 
 | 
| coninhcount | integer | 约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。 | 
| connoinherit | boolean | 是否可以被继承。 
 | 
| consoft | boolean | 是否为信息约束(Informational Constraint)。 
 | 
| conopt | boolean | 是否使用信息约束优化执行计划。 
 | 
| conkey | smallint[] | 如果是表约束,则是约束控制的字段列表。 | 
| confkey | smallint[] | 如果是一个外键,是参考的字段的列表。 | 
| conpfeqop | oid[] | 如果是一个外键,是做PK=FK比较的相等操作符ID的列表。 | 
| conppeqop | oid[] | 如果是一个外键,是做PK=PK比较的相等操作符ID的列表。 | 
| conffeqop | oid[] | 如果是一个外键,是做FK=FK比较的相等操作符ID的列表。由于当前不支持外键,所以值为空。 | 
| conexclop | oid[] | 如果是一个排他约束,是列的排他操作符ID列表。 | 
| conbin | pg_node_tree | 如果是检查约束,那就是其表达式的内部形式。 | 
| consrc | text | 如果是检查约束,则是表达式的可读形式。 | 
| conincluding | smallint[] | 不用做约束,但是会包含在INDEX中的属性列。 | 
 
 
  - consrc在被引用的对象改变之后不会被更新,它不会跟踪字段的名称修改。与其依赖这个字段,还是使用pg_get_constraintdef()来抽取一个检查约束的定义。
- 13.2.53 PG_CLASS的relchecks需要和在此表上为给定关系找到的检查约束的数目一致。
 
  