On this page
52.47. pg_shdepend
目录pg_shdepend
记录数据库对象和共享对象(例如角色)之间的依赖关系。该信息使 PostgreSQL 可以确保在尝试删除这些对象之前未对其进行引用。
另请参见pg_depend,它对涉及单个数据库内对象的依赖项执行类似的功能。
与大多数系统目录不同,pg_shdepend
在群集的所有数据库之间共享:每个群集只有pg_shdepend
的一个副本,而不是每个数据库一个。
表 52.47. pg_shdepend
列
Name | Type | References | Description |
---|---|---|---|
dbid |
oid |
pg_database.oid |
从属对象所在数据库的 OID,对于共享对象为 0 |
classid |
oid |
pg_class.oid |
从属对象所在的系统目录的 OID |
objid |
oid |
任何 OID 列 | 特定从属对象的 OID |
objsubid |
int4 |
对于表列,这是列号(objid 和classid 表示表本身)。对于所有其他对象类型,此列为零。 |
|
refclassid |
oid |
pg_class.oid |
引用对象所在的系统目录的 OID(必须是共享目录) |
refobjid |
oid |
任何 OID 列 | 特定参考对象的 OID |
deptype |
char |
定义此依赖关系的特定语义的代码;看到 Literals |
在所有情况下,pg_shdepend
条目表示如果不删除依赖对象也不能删除所引用的对象。但是,存在由deptype
标识的几种子口味:
SHARED_DEPENDENCY_OWNER
(o
)- 引用的对象(必须是角色)是从属对象的所有者。
SHARED_DEPENDENCY_ACL
(a
)- 在从属对象的 ACL(访问控制列表,即特权列表)中提到了引用的对象(必须是角色)。 (该对象的所有者未创建
SHARED_DEPENDENCY_ACL
条目,因为所有者仍然会有SHARED_DEPENDENCY_OWNER
条目.)
- 在从属对象的 ACL(访问控制列表,即特权列表)中提到了引用的对象(必须是角色)。 (该对象的所有者未创建
SHARED_DEPENDENCY_POLICY
(r
)- 引用的对象(必须是角色)被称为从属策略对象的目标。
SHARED_DEPENDENCY_PIN
(p
)- 没有从属对象。这种类型的 Importing 表明系统本身依赖于引用的对象,因此绝不能删除该对象。此类型的条目仅由
initdb
创建。从属对象的列包含零。
- 没有从属对象。这种类型的 Importing 表明系统本身依赖于引用的对象,因此绝不能删除该对象。此类型的条目仅由
将来可能需要其他依赖项。特别要注意的是,当前定义仅支持将角色用作引用对象。