回答:
(サーバーへの管理アクセス権がない場合)
ALTER ROLE <your_login_role> SET search_path TO a,b,c;
知っておくべき2つの重要な点:
a, b, c
する順序は、スキーマがテーブルを検索する順序でもあるため、重要です。したがって、デフォルトの複数のスキーマで同じテーブル名を使用している場合でも、曖昧さはなく、サーバーは常に、最初に指定したスキーマのテーブルを使用しますsearch_path
。デフォルトsearch_path
はデータベースレベルで設定できます。
ALTER DATABASE <database_name> SET search_path TO schema1,schema2;
または、ユーザーまたは役割レベルで:
ALTER ROLE <role_name> SET search_path TO schema1,schema2;
または、すべてのデータベースに共通のデフォルトスキーマがある場合、search_pathオプションを使用して、構成ファイルでシステム全体のデフォルトを設定できます。
データベースが作成されると、それが名前の隠された「テンプレート」データベースからデフォルトで作成されたtemplate1を、あなたは将来的に作成されたすべてのデータベース用の新しいデフォルトの検索パスを指定するには、そのデータベースを変更することができます。別のテンプレートデータベースCREATE DATABASE <database_name> TEMPLATE <template_name>
を作成し、を使用してデータベースを作成することもできます。
ジョシュは正しいですが、彼は1つのバリエーションを省略しました:
ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;
1つの特定のデータベースで、ユーザーの検索パスを設定します。