無料スクリプト配布のPHP.TO   PHPの実用的なtips PHPマニュアル MySQLマニュアル Apacheマニュアル PostgreSQLマニュアル マニュアル検索    

47.19. pg_depend

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

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

表 47-19. 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_EXTENSION ( e )

依存するオブジェクトは参照されるオブジェクトの extension のメンバです( pg_extension 参照)。 依存するオブジェクトは参照されるオブジェクトに対する DROP EXTENSION 経由でのみ削除することができます。 機能的にはこの種類の依存関係は内部依存関係と同様に動作しますが、明確さと pg_dump を単純化するために別々に保持されます。

DEPENDENCY_PIN ( p )

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

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


powered by SEO.CUG.NET