2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 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

52.48. pg_shdepend #

目錄 pg_shdepend 記錄了資料庫物件與共享物件(例如角色)之間的依賴關係。這些資訊允許 PostgreSQL 在嘗試刪除物件之前確保這些物件未被引用。

另請參見 pg_depend,它對單個數據庫內物件之間的依賴關係執行類似的功能。

與大多數系統目錄不同,pg_shdepend 在叢集的所有資料庫之間共享:每個叢集只有一份 pg_shdepend 的副本,而不是每個資料庫一份。

表 52.48. pg_shdepend

列 型別

描述

dbid oid (引用 pg_database.oid)

依賴物件所在的資料庫的 OID,對於共享物件為零

classid oid(引用 pg_class.oid

依賴物件所在的系統目錄的 OID

objid oid(引用任何 OID 列)

特定依賴物件的 OID

objsubid int4

對於表列,這是列號(objidclassid 指的是表本身)。對於所有其他物件型別,此列為零。

refclassid oid (引用 pg_class.oid)

被引用物件所在的系統目錄的 OID(必須是共享目錄)

refobjid oid (引用任何 OID 列)

特定被引用物件的 OID

deptype char

一個程式碼,定義此依賴關係的具體語義;參見文字


在所有情況下,pg_shdepend 條目都表示在刪除依賴物件之前不能刪除被引用物件。但是,deptype 標識了幾種子型別:

SHARED_DEPENDENCY_OWNER (o)

被引用物件(必須是角色)是依賴物件的所有者。

SHARED_DEPENDENCY_ACL (a)

被引用物件(必須是角色)在依賴物件的ACL中被提及。(對於物件的所有者,不會建立 SHARED_DEPENDENCY_ACL 條目,因為所有者已經有 SHARED_DEPENDENCY_OWNER 條目。)

SHARED_DEPENDENCY_INITACL (i)

被引用物件(必須是角色)在依賴物件的 pg_init_privs 條目中被提及。

SHARED_DEPENDENCY_POLICY (r)

被引用物件(必須是角色)被提及為依賴的策略物件的目標。

SHARED_DEPENDENCY_TABLESPACE (t)

被引用物件(必須是表空間)被提及為沒有儲存的關係的表空間。

將來可能需要其他依賴型別。特別要注意的是,當前定義僅支援角色和表空間作為被引用物件。

pg_depend 目錄類似,在 initdb 期間建立的大多數物件都被認為是 固定 的。在 pg_shdepend 中不會建立任何會將固定物件作為被引用物件或依賴物件建立的條目。

提交更正

如果您在文件中發現任何不正確的內容、與您在使用特定功能時的經驗不符或需要進一步澄清的內容,請使用 此表格 報告文件問題。