↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

3.13. pg_depend #

pg_depend 表记录数据库对象之间的依赖关系。这些信息允许 DROP 命令查找必须被 DROP CASCADE 删除的其他对象,或者在 DROP RESTRICT 情况下阻止删除。

表 3.13. pg_depend 列

名称 类型 引用 描述
classid oid pg_class.oid 依赖对象所在的系统目录的 oid
objid oid any oid attribute 特定依赖对象的 oid
objsubid int4   对于表属性,这是该属性的列号(objid 和 classid 指表本身)。对于所有其他对象类型,此字段目前为零。
refclassid oid pg_class.oid 被引用对象所在的系统目录的 oid
refobjid oid any oid attribute 特定被引用对象的 oid
refobjsubid int4   对于表属性,这是该属性的列号(refobjid 和 refclassid 指表本身)。对于所有其他对象类型,此字段目前为零。
deptype char   定义该依赖关系具体语义的代码。

在所有情况下,一个 pg_depend 项都表明:被引用对象不能在不删除依赖对象的情况下被删除。不过,由 deptype 标识的依赖有几种子类型:

  • DEPENDENCY_NORMAL ('n'):分开创建的对象之间的正常关系。可以不影响被引用对象而删除依赖对象。被引用对象只能通过指定 CASCADE 来删除,此时依赖对象也会被删除。例如:表列对其数据类型有一个 normal 依赖。

  • DEPENDENCY_AUTO ('a'):依赖对象可以独立于被引用对象删除,并且在被引用对象被删除时应自动删除(无论 RESTRICT 还是 CASCADE 模式)。例如:表上的一个命名约束对表是 autodependent 的,这样表被删除时它也会消失。

  • DEPENDENCY_INTERNAL ('i'):依赖对象是作为创建被引用对象的一部分而创建的,实际上只是其内部实现的一部分。对依赖对象的直接删除将被禁止(我们会让用户改为对被引用对象发出 DROP)。无论是否指定 CASCADE,对被引用对象的 DROP 都会传播下去删除依赖对象。例如:为实施外键约束而创建的触发器对约束的 pg_constraint 项有 internal 依赖。

  • DEPENDENCY_PIN ('p'):没有依赖对象;这种类型的项是一个信号,表明系统自身依赖于被引用对象,因此该对象永远不能被删除。这种类型的项只能在 initdb 期间创建。依赖对象各字段的值为零。

未来的版本中可能还需要其他种类的依赖。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。