Verticaでは、テーブルアクセス時のスキーマ名を省略した場合に、自動選択されるスキーマをSEARCH_PATHで管理しています。
目次
スキーマ修飾の優先順を確認する方法
Verticaにログイン後、以下のコマンドで、自動で修飾されるスキーマの優先順を確認することができます。構文
1 |
SHOW SEARCH_PATH; |
実行例
1 2 3 4 5 |
dbadmin=> SHOW SEARCH_PATH; name | setting -------------+--------------------------------------------------- search_path | "$user", public, v_catalog, v_monitor, v_internal (1 row) |
デフォルトでは上記のように、ユーザー名のスキーマ、publicスキーマ、システムテーブル用スキーマ(v_catalogスキーマ、v_monitorスキーマ、v_internalスキーマ)の順で参照されます。
※ユーザー名と同名のスキーマは意図的に作成しないと存在しません。
スキーマ修飾の優先順を変更する方法
セッション単位の変更方法
セッション単位で自動修飾されるスキーマの優先順を変更する場合は、Verticaログイン後に下記コマンドを実行します。構文
1 |
SET SEARCH_PATH TO スキーマ名1,スキーマ名2....; |
実行例
1 2 3 4 5 6 7 8 |
dbadmin=> SET SEARCH_PATH TO test_schema, "$user", public; SET dbadmin=> dbadmin=> SHOW SEARCH_PATH; name | setting -------------+---------------------------------------------------------------- search_path | test_schema, "$user", public, v_catalog, v_monitor, v_internal (1 row) |
なお、 v_catalogスキーマ、v_monitorスキーマ、v_internalスキーマは常にSEARCH_PATHに含まれる仕様のため、上記コマンド実行時に省略することができます。
ユーザー単位(永続的)の変更方法
ユーザー単位で永続的に自動修飾されるスキーマの優先順を変更する場合は、Verticaログイン後に下記コマンドを実行します。構文
1 |
ALTER USER ユーザ名 SEARCH_PATH スキーマ名1,スキーマ名2,....; |
実行例
1 2 3 4 5 6 7 8 9 10 11 |
dbadmin=> ALTER USER dbadmin SEARCH_PATH test_schema, "$user", public; ALTER USER dbadmin=> -- Verticaに再ログイン dbadmin=> SHOW SEARCH_PATH; name | setting -------------+---------------------------------------------------------------- search_path | test_schema, "$user", public, v_catalog, v_monitor, v_internal (1 row) |
なお、 v_catalogスキーマ、v_monitorスキーマ、v_internalスキーマは常にSEARCH_PATHに含まれる仕様のため、上記コマンド実行時に省略することができます。