GaussDB-PG_CONSTRAINT

93 阅读3分钟

GaussDB-PG_CONSTRAINT

PG_CONSTRAINT系统表存储表上的检查约束、主键、唯一约束和外键约束。

名称类型描述
oidoid行标识符(隐含字段,必须明确选择)。
connamename约束名称(不一定是唯一的)。
connamespaceoid包含这个约束的名称空间的OID。
contype"char"- c:检查约束。
  • p:主键约束。
  • u:唯一约束。
  • t:触发器约束。
  • x:互斥约束。
  • f:外键约束。
  • s:聚簇约束。
  • i:无效约束。 | | condeferrable | boolean | 这个约束是否可以推迟。- true:表示可以。
  • false:表示不可以。 | | condeferred | boolean | 缺省时这个约束是否可以推迟。- true:表示可以。
  • false:表示不可以。 | | convalidated | boolean | 约束是否有效。目前,只有外键和CHECK约束可将其设置为false。- true:表示有效。
  • false:表示无效。 | | conrelid | oid | 这个约束所在的表,如果不是表约束则为0。 | | contypid | oid | 这个约束所在的域,如果不是一个域约束则为0。 | | conindid | oid | 与约束关联的索引ID。 | | confrelid | oid | 如果是外键,则为参考的表,否则为0。 | | confupdtype | "char" | 外键更新动作代码。- a:没动作。
  • r:限制。
  • c:级联。
  • n:设置为null。
  • d:设置为缺省。 | | confdeltype | "char" | 外键删除动作代码。- a:没动作。
  • r:限制。
  • c:级联。
  • n:设置为null。
  • d:设置为缺省。 | | confmatchtype | "char" | 外键匹配类型。- f:全部。
  • p:部分。
  • u:未指定(在f的基础上允许匹配NULL值)。 | | conislocal | boolean | 是否是为关系创建的本地约束。- true:表示是。
  • false:表示不是。 | | coninhcount | integer | 约束直接继承父表的数目。继承父表数非零时,不能删除或重命名该约束。 | | connoinherit | boolean | 是否可以被继承。- true:表示可以。
  • false:表示不可以。 | | consoft | boolean | 是否为信息约束(Informational Constraint)。- true:表示是。
  • false:表示不是。 | | conopt | boolean | 是否使用信息约束优化执行计划。- true:表示使用。
  • false:表示不使用。 | | 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中的属性列。 |

NOTICE:

  • consrc在被引用的对象改变之后不会被更新,它不会跟踪字段的名称修改。建议使用pg_get_constraintdef()来抽取一个检查约束的定义。
  • 12.2.15.28 PG_CLASS的relchecks需要和在该表上为给定关系找到的检查约束的数目一致。

更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…