pg_depend

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

# 45.16. `pg_depend`

`pg_depend`カタログは、データベースオブジェクト間の依存関係を記録します。 この情報によって`DROP`コマンドが、他のどのオブジェクトを`DROP CASCADE`で削除する必要があるか、また、`DROP RESTRICT`で削除を防止するかの場合を判断します。

`pg_shdepend`も参照してください。 これはデータベースクラスタ間で共有されるオブジェクトの依存関係に対する似たような機能を持っています。

表 45-16. `pg_depend`の列

名前 | 型 | 参照先 | 説明
--- | --- | --- | ---
`classid` | `oid` | ``pg_class`.oid` | 依存するオブジェクトを含んだシステムカタログのOID
`objid` | `oid` | any OID column | 特定の依存するオブジェクトのOID
`objsubid` | `int4` |  | テーブル列の場合、これは列番号です（`objid`と`classid`はテーブル自身を参照します）。 他のすべての種類のオブジェクトでは、このフィールドはゼロです。
`refclassid` | `oid` | ``pg_class`.oid` | 参照されるオブジェクトが存在するシステムカタログのOID
`refobjid` | `oid` | any OID column | 特定の参照されるオブジェクトのOID
`refobjsubid` | `int4` |  | テーブル列の場合、これは列番号です（`refobjid`と`refclassid`はテーブル自身を参照します）。 他のすべての種類のオブジェクトでは、このフィールドはゼロです。
`deptype` | `char` |  | この依存関係の特定のセマンティクスを定義するコード（後述）。

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

`DEPENDENCY_NORMAL` (`n`)

  個別に作成されたオブジェクト間の通常の関係です。 依存するオブジェクトは参照されるオブジェクトに影響を与えずに削除できます。 参照されるオブジェクトは`CASCADE`を指定することによってのみ削除することができます。 この場合は依存するオブジェクトも削除されます。 例：テーブルの列はそのデータ型に対して通常の依存関係を持ちます。

`DEPENDENCY_AUTO` (`a`)

  依存するオブジェクトは参照されるオブジェクトから独立して削除することができます。 そして、参照されるオブジェクトが削除される時は（`RESTRICT`もしくは`CASCADE`モードに関わりなく）依存するオブジェクトも自動的に削除されなければなりません。 例：テーブル上の名前付き制約はテーブル上に自動設定されているため、テーブルが削除されるとなくなります。

`DEPENDENCY_INTERNAL` (`i`)

  依存するオブジェクトは参照されるオブジェクトの作成時に作成されたもので、実際に内部実装の一部に過ぎません。 依存するオブジェクトに対して`DROP`コマンドを直接的に実行できません （その代わりに、参照されるオブジェクトに対して`DROP`を実行するように指示されます）。 参照されるオブジェクトに`DROP`を実行すると、`CASCADE`が指定されているかどうかに関わらず、依存するオブジェクトも削除されます。 例：外部キー制約を強制するために作成されたトリガは内部的に制約の`pg_constraint`項目に依存しています。

`DEPENDENCY_PIN` (`p`)

  依存するオブジェクトはありません。 この種類の項目は、参照されるオブジェクトにシステム自体が依存し、したがってオブジェクトを絶対に削除してはならないことを示します。 この種類の項目は`initdb`の実行時にのみ作成されます。 依存するオブジェクト列にはゼロが含まれます。

将来的に、他の依存関係のオプションが必要になる可能性があります。

前のページ | ホーム | 次のページ
`pg_default_acl` | 上に戻る | `pg_description`