Постоянно Заданной Траектории Схемы В PostgreSQL
мне нужно установить путь схемы в Postgres, чтобы я не каждый раз указывал таблицу точек схемы, например schema2.table.
Установить путь к схеме:
SET SCHEMA PATH a,b,c
похоже, что работает только для одного сеанса запроса на mac, после закрытия окна запроса переменная path возвращается к значению по умолчанию.
Как я могу сделать его постоянным?
3 ответов:
(и если у вас нет доступа администратора к серверу)
ALTER ROLE <your_login_role> SET search_path TO a,b,c;две важные вещи, чтобы знать о:
- когда имя схемы не просто, оно должно быть заключено в двойные кавычки.
- порядок, в котором вы устанавливаете схемы по умолчанию
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>для создания баз данных.
Джош прав, но он пропустил один вариант:
ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;задайте путь поиска для пользователя в одной конкретной базе данных.
Comments