はじめに

9.1以前のバージョンでは、ビューの依存関係を確認できるシステムテーブルはありませんでした。
バージョン9.2から実装されたview_tablesでは、ビュー関連の依存関係に関する情報が確認できます。

前提として、VerticaではビューのDROP時に依存関係をチェックしません。
そのため、ビューやテーブルの削除や名前変更にあたり、依存関係をチェックしておきたい時にはview_tablesを参照します。

view_tablesの概要

V_CATALOGスキーマに属するシステムテーブルです。
ビューを参照するテーブル、そのスキーマ、所有者など、ビュー関連の依存関係に関する情報を確認できます。

確認できる情報は以下です。
カラム名データ型説明
TABLE_ID INTEGERビューを一意に識別できる数値
TABLE_SCHEMAVARCHARビューが属するスキーマ名
TABLE_NAMEVARCHARビュー名
REFERENCE_TABLE_IDINTEGERビューが参照する表を一意に識別する数値
REFERENCE_TABLE_SCHEMAVARCHARビューが参照する表の属するスキーマ名
REFERENCE_TABLE_NAMEVARCHARビューが参照するテーブル名
REFERENCE_TABLE_OWNER_IDINTEGERビューの所有者を一意に識別する数値

確認例

ビューの依存関係の確認

reference_table_name列を確認すると、vw_testビューがtbl_testテーブルを参照していることが分かります。
現在tbl_testテーブルは存在しているため、table_schemaやreference_table_idに値が入っています。

※イメージ図

tbl_testテーブルを削除した場合

テーブルを削除

view_tablesを確認

reference_table_nameに表示されているtbl_testテーブルは実際には存在しないため、reference_table_id 、reference_table_schema、reference_table_owner_idがNULLとなっているのが分かります。

vw_testにSELECT文を実行

vw_testビューは、tbl_testテーブルを参照しようとするため、この問合せは失敗します。

参考情報

view_tables
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/SystemTables/CATALOG/VIEW_TABLES.htm

DROP VIEW
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/Statements/DROPVIEW.htm

V_CATALOG Schema
https://www.vertica.com/docs/9.2.x/HTML/Content/Authoring/SQLReferenceManual/SystemTables/CATALOG/V_CATALOGSchema.htm

検証バージョンについて

この記事の内容はVertica 9.2で確認しています。

更新履歴

2019/4/4 本記事を公開