pg_shdepend

PostgreSQL 9.1.1文書
前のページ | 巻戻し | 第 45章システムカタログ | 早送り | 次のページ

# 45.38. `pg_shdepend`

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

`pg_depend`を参照してください。 これは単一のデータベースのオブジェクトに関する依存関係に対する似たような機能を持ちます。

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

表 45-38. `pg_shdepend`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`dbid` | `oid` | ``pg_database`.oid` | 依存するオブジェクトが格納されたデータベースのOID。共有オブジェクトではゼロ
`classid` | `oid` | ``pg_class`.oid` | 依存するオブジェクトが格納されたシステムカタログのOID
`objid` | `oid` | any OID column | 特定の依存するオブジェクトのOID
`objsubid` | `int4` |  | テーブル列の場合、これは列番号です(`objid`と`classid`はテーブル自身を参照します)。 他のすべての種類のオブジェクトでは、この列はゼロになります。
`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_OWNER`項目を持つため、`SHARED_DEPENDENCY_ACL`項目は、オブジェクトの所有者に対して作成されません。）

`SHARED_DEPENDENCY_PIN` (`p`)

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

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

前のページ | ホーム | 次のページ
`pg_seclabel` | 上に戻る | `pg_shdescription`