他のバージョンの文書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 | 7.2

51.47. pg_shdepend

pg_shdependカタログは、データベースオブジェクトとロールのような共有オブジェクト間のリレーション依存関係を保持します。 この情報はPostgreSQLが依存関係を削除しようとする前に、これらのオブジェクトを参照されないようにすることを保証することを許可します。

pg_dependも参照してください。 pg_dependは単一のデータベース内のオブジェクトに関する依存関係について同じような機能を実行します。

多くのシステムカタログと異なりpg_shdependはクラスタの全てのデータベースに共有されています。 データベース毎ではなく、クラスタ毎にただ1つのpg_shdependのコピーがあります。

表51.47 pg_shdependの列

名前参照先説明
dbidoidpg_database.oid依存するオブジェクトが格納されたデータベースのOID。共有オブジェクトではゼロ
classidoidpg_class.oid依存するオブジェクトが格納されたシステムカタログのOID
objidoidany OID column特定の依存するオブジェクトのOID
objsubidint4 テーブル列の場合、これは列番号です(objidclassidはテーブル自身を参照します)。 他のすべての種類のオブジェクトでは、この列はゼロになります。
refclassidoidpg_class.oid参照されるオブジェクトが入っているシステムカタログのOID(共有カタログである必要があります)
refobjidoid任意のOID列特定の参照されるオブジェクトのOID
deptypechar この依存関係の特定のセマンティクスを定義するコード(後述)。

すべての場合において、pg_shdepend項目は依存するオブジェクトも削除しない限り、参照されるオブジェクトを削除できないことを示します。 もっとも、deptypeによって指定される以下のようないくつかのオプションもあります。

SHARED_DEPENDENCY_OWNER (o)

参照されるオブジェクト(ロールである必要があります)が依存するオブジェクトの所有者です。

SHARED_DEPENDENCY_ACL (a)

参照されたオブジェクト(ロールである必要があります)が、依存するオブジェクトのACL(アクセス制御リスト。権限リストのこと)内で述べられています。 (所有者はSHARED_DEPENDENCY_OWNER項目を持つため、SHARED_DEPENDENCY_ACL項目は、オブジェクトの所有者に対して作成されません。)

SHARED_DEPENDENCY_POLICY (r)

参照されたオブジェクト(ロールである必要があります)が、依存するポリシーオブジェクトのターゲットとして述べられています。

SHARED_DEPENDENCY_PIN (p)

依存するオブジェクトはありません。 この種類の項目は、システム自体が参照されるオブジェクトに依存している記号です。 よってオブジェクトは削除されてはいけません。 この種類の項目はinitdbによってのみ作成されます。 依存するオブジェクトの列はゼロを含んでいます。

他の依存関係のオプションが将来必要になる可能性があります。 現状の定義は、参照されるオブジェクトとしてロールのみをサポートしていることに特に注意してください。