On this page
52.18. pg_depend
目录pg_depend
记录数据库对象之间的依赖关系。此信息允许DROP
命令查找DROP CASCADE
必须删除哪些其他对象,或者防止DROP RESTRICT
情况下删除。
另请参见pg_shdepend,它对涉及跨数据库群集共享的对象的依赖项执行类似的功能。
表 52.18. pg_depend
列
Name | Type | References | Description |
---|---|---|---|
classid |
oid |
pg_class.oid |
从属对象所在的系统目录的 OID |
objid |
oid |
任何 OID 列 | 特定从属对象的 OID |
objsubid |
int4 |
对于表列,这是列号(objid 和classid 表示表本身)。对于所有其他对象类型,此列为零。 |
|
refclassid |
oid |
pg_class.oid |
引用对象所在的系统目录的 OID |
refobjid |
oid |
任何 OID 列 | 特定参考对象的 OID |
refobjsubid |
int4 |
对于表列,这是列号(refobjid 和refclassid 表示表本身)。对于所有其他对象类型,此列为零。 |
|
deptype |
char |
定义此依赖关系的特定语义的代码;看到 Literals |
在所有情况下,pg_depend
条目表示如果不删除依赖对象也不能删除所引用的对象。但是,存在由deptype
标识的几种子口味:
DEPENDENCY_NORMAL
(n
)- 单独创建的对象之间的正常关系。可以删除从属对象,而不会影响引用的对象。只能通过指定
CASCADE
删除引用的对象,在这种情况下,也要删除从属对象。示例:一个表列对其数据类型具有正常的依赖性。
- 单独创建的对象之间的正常关系。可以删除从属对象,而不会影响引用的对象。只能通过指定
DEPENDENCY_AUTO
(a
)- 可以将依赖对象与引用对象分开删除,并且如果引用对象被删除,则应自动删除(无论
RESTRICT
或CASCADE
模式如何)。示例:使表上的命名约束自动依赖于表,因此如果删除表,它将消失。
- 可以将依赖对象与引用对象分开删除,并且如果引用对象被删除,则应自动删除(无论
DEPENDENCY_INTERNAL
(i
)- 从属对象是作为引用对象创建的一部分而创建的,实际上只是其内部实现的一部分。完全禁止使用
DROP
的从属对象(我们将告诉用户对所引用的对象发出DROP
)。无论是否指定了CASCADE
,被引用对象的DROP
都会传播通过以删除依赖对象。示例:为强制执行外键约束而创建的触发器在内部依赖于约束的pg_constraint
条目。
- 从属对象是作为引用对象创建的一部分而创建的,实际上只是其内部实现的一部分。完全禁止使用
DEPENDENCY_INTERNAL_AUTO
(I
)- 从属对象是作为引用对象创建的一部分而创建的,实际上只是其内部实现的一部分。完全禁止使用
DROP
的从属对象(我们将告诉用户对所引用的对象发出DROP
)。尽管常规内部依赖项将防止在保留任何此类依赖项的情况下丢弃该依赖项对象,但DEPENDENCY_INTERNAL_AUTO
将允许此类丢弃,只要可以通过遵循任何此类依赖项找到该对象即可。示例:使分区上的索引内部依赖于分区本身以及父分区表上的索引;因此,分区索引将与它所索引的分区或与之相连的父索引一起删除。
- 从属对象是作为引用对象创建的一部分而创建的,实际上只是其内部实现的一部分。完全禁止使用
DEPENDENCY_EXTENSION
(e
)- 从属对象是作为引用对象的* extension *的成员(请参见pg_extension)。只能通过
DROP EXTENSION
删除引用对象上的从属对象。从功能上讲,此依赖类型的作用与内部依赖相同,但为了清晰起见并简化 pg_dump,将其分开。
- 从属对象是作为引用对象的* extension *的成员(请参见pg_extension)。只能通过
DEPENDENCY_AUTO_EXTENSION
(x
)- 从属对象不是作为引用对象的扩展的成员(因此,pg_dump 不应将其忽略),但是如果没有它,它将无法运行,并且当扩展本身存在时,应将其删除。依赖对象也可以自行删除。
DEPENDENCY_PIN
(p
)- 没有从属对象。这种类型的 Importing 表明系统本身依赖于引用的对象,因此绝不能删除该对象。此类型的条目仅由
initdb
创建。从属对象的列包含零。
- 没有从属对象。这种类型的 Importing 表明系统本身依赖于引用的对象,因此绝不能删除该对象。此类型的条目仅由
将来可能需要其他依赖项。