pg_shdepend
pg_shdepend
カタログは、データベースオブジェクトとロールのような共有オブジェクト間のリレーション依存関係を保持します。
この情報はPostgreSQLが依存関係を削除しようとする前に、これらのオブジェクトを参照されないようにすることを保証することを許可します。
pg_depend
も参照してください。
pg_depend
は単一のデータベース内のオブジェクトに関する依存関係について同じような機能を実行します。
多くのシステムカタログと異なりpg_shdepend
はクラスタの全てのデータベースに共有されています。
データベース毎ではなく、クラスタ毎にただ1つのpg_shdepend
のコピーがあります。
表51.47 pg_shdepend
の列
名前 | 型 | 参照先 | 説明 |
---|---|---|---|
dbid | oid |
| 依存するオブジェクトが格納されたデータベースのOID。共有オブジェクトではゼロ |
classid | oid |
| 依存するオブジェクトが格納されたシステムカタログのOID |
objid | oid | any OID column | 特定の依存するオブジェクトのOID |
objsubid | int4 |
テーブル列の場合、これは列番号です(objid とclassid はテーブル自身を参照します)。
他のすべての種類のオブジェクトでは、この列はゼロになります。
| |
refclassid | 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_POLICY
(r
)参照されたオブジェクト(ロールである必要があります)が、依存するポリシーオブジェクトのターゲットとして述べられています。
SHARED_DEPENDENCY_PIN
(p
)
依存するオブジェクトはありません。
この種類の項目は、システム自体が参照されるオブジェクトに依存している記号です。
よってオブジェクトは削除されてはいけません。
この種類の項目はinitdb
によってのみ作成されます。
依存するオブジェクトの列はゼロを含んでいます。
他の依存関係のオプションが将来必要になる可能性があります。 現状の定義は、参照されるオブジェクトとしてロールのみをサポートしていることに特に注意してください。