pg_shdepend

pg_shdepend系统目录表记录数据库对象和共享对象(例如角色)之间的依赖关系。这些信息使得Greenplum数据库可以确保对象在被删除时没有被其他对象引用。另见pg_depend,它对单个数据库中对象之间的依赖提供了相似的功能。 与大部分其他系统目录不同,pg_shdepend 在Greenplum系统的所有数据库之间共享:在每一个系统中只有一份pg_shdepend拷贝,而不是每个数据库一份。

在所有情况下,一个pg_shdepend项表明被引用对象不能在没有删除其依赖对象的情况下被删除。但是,其中也有多种依赖类型,由 deptype标识:

  • SHARED_DEPENDENCY_OWNER (o) — 被引用对象(必须是一个角色)是依赖对象的拥有者。
  • SHARED_DEPENDENCY_ACL (a) — 被引用对象(必须是一个角色)在依赖对象的ACL(访问控制列表)中被提到。
  • SHARED_DEPENDENCY_PIN (p) — 没有依赖对象;这种类型的项是系统本身依赖被引用对象的信号,因此对象绝不能被删除。此类型的项仅通过系统初始化创建,依赖对象列包含0。

表 1. pg_catalog.pg_shdepend

名称 类型 引用 描述
dbid oid pg_database.oid 依赖对象所在的数据库OID,如果是一个共享对象则值为0。
classid oid pg_class.oid 依赖对象所在的系统目录的OID。
objid oid 任意OID列。 依赖对象的OID。
objsubid int4 对于一个表列,这将是列编号。对于所有其他对象类型,该列值为0。
refclassid oid pg_class.oid 被引用对象所在的系统目录的OID(必须是一个共享的目录)。
refobjid oid 任意OID列。 被引用对象的OID。
refobjsubid int4 对于一个表列,这将是被引用列的列编号。对于所有其他对象类型,该列值为0。
deptype char 一个定义该依赖关系的特定语义的代码。

上级主题: 系统目录定义

当前内容版权归GreenPlum和翻译组所有,若有侵权请联系删除下架 修订时间: 2024-09-15 21:48:05

results matching ""

    No results matching ""