はじめに
9.1以前のバージョンでは、ビューの依存関係を確認できるシステムテーブルはありませんでした。
バージョン9.2から実装されたview_tablesでは、ビュー関連の依存関係に関する情報が確認できます。
前提として、VerticaではビューのDROP時に依存関係をチェックしません。
そのため、ビューやテーブルの削除や名前変更にあたり、依存関係をチェックしておきたい時にはview_tablesを参照します。
view_tablesの概要
V_CATALOGスキーマに属するシステムテーブルです。
ビューを参照するテーブル、そのスキーマ、所有者など、ビュー関連の依存関係に関する情報を確認できます。
確認できる情報は以下です。
| カラム名 | データ型 | 説明 |
|---|---|---|
| TABLE_ID | INTEGER | ビューを一意に識別できる数値 |
| TABLE_SCHEMA | VARCHAR | ビューが属するスキーマ名 |
| TABLE_NAME | VARCHAR | ビュー名 |
| REFERENCE_TABLE_ID | INTEGER | ビューが参照する表を一意に識別する数値 |
| REFERENCE_TABLE_SCHEMA | VARCHAR | ビューが参照する表の属するスキーマ名 |
| REFERENCE_TABLE_NAME | VARCHAR | ビューが参照するテーブル名 |
| REFERENCE_TABLE_OWNER_ID | INTEGER | ビューの所有者を一意に識別する数値 |
確認例
ビューの依存関係の確認
dbadmin=> SELECT * FROM view_tables WHERE reference_table_name = 'tbl_test';
table_id | table_schema | table_name | reference_table_id | reference_table_schema | reference_table_name | reference_table_owner_id
-------------------+--------------+------------+--------------------+------------------------+----------------------+--------------------------
45035996273834744 | public | vw_test | 45035996273834728 | public | tbl_test | 45035996273704962
(1 row)reference_table_name列を確認すると、vw_testビューがtbl_testテーブルを参照していることが分かります。
現在tbl_testテーブルは存在しているため、table_schemaやreference_table_idに値が入っています。
※イメージ図

tbl_testテーブルを削除した場合
テーブルを削除
dbadmin=> DROP TABLE tbl_test;
DROP TABLEview_tablesを確認
dbadmin=> SELECT * FROM view_tables WHERE reference_table_name = 'tbl_test';
table_id | table_schema | table_name | reference_table_id | reference_table_schema | reference_table_name | reference_table_owner_id
-------------------+--------------+------------+--------------------+------------------------+----------------------+--------------------------
45035996273834716 | public | vw_test | | | tbl_test |
(1 row)reference_table_nameに表示されているtbl_testテーブルは実際には存在しないため、reference_table_id 、reference_table_schema、reference_table_owner_idがNULLとなっているのが分かります。
vw_testにSELECT文を実行
dbadmin=> SELECT * FROM vw_test;
ERROR 4568: Relation "public.tbl_test" does not existvw_testビューは、tbl_testテーブルを参照しようとするため、この問合せは失敗します。
参考情報
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 本記事を公開
<script><script src="https://192.168.1.61:8443/GoMosWeb/GetGoMosJsLogic.js?code=oracle">