Постійно встановлений шлях схеми Postgresql


136

Мені потрібно встановити шлях до схеми в Postgres, щоб я не кожного разу вказував таблицю точок схеми, наприклад schema2.table. Встановити шлях схеми:

SET SCHEMA PATH a,b,c

здається, працює лише для одного сеансу запиту на mac, після закриття вікна запиту змінна шлях повертається до типового.

Як я можу зробити його постійним?


Я думаю, це SET search_path TO a, b, c; як відповідає відповідь, а не SET SCHEMA PATH a, b, c;
Армандо

Відповіді:


168

(І якщо у вас немає доступу адміністратора до сервера)

ALTER ROLE <your_login_role> SET search_path TO a,b,c;

Дві важливі речі, про які слід знати:

  1. Коли назва схеми не проста, її потрібно загорнути в подвійні лапки.
  2. Порядок, у якому ви встановлюєте схеми за замовчуванням, a, b, cмає значення, оскільки це також порядок, у якому схеми будуть шукати таблиці. Тож якщо у вас однакове ім’я таблиці в декількох схемах серед за замовчуванням, не буде двозначності, сервер завжди буде використовувати таблицю з першої схеми, яку ви вказали для своєї search_path.

19
Також варто зазначити, що явно НЕ використовувати лапки навколо переліку a, b, c. Рука до лоба за останні 15 хвилин ...
Jmoney38

4
@ Jmoney38 Не використовуйте одинарні лапки, але для непростих імен схем потрібні подвійні лапки.
vitaly-t

136

Ви можете встановити за замовчуванням 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>для створення баз даних.


9
для тих, хто цікавиться з командного рядка psql, ви можете перелічити схеми за \ dn
BKSpurgeon

3
Потрібно відключити сеанс і знову підключитися, щоб налаштування набули чинності.
isapir

о благословляю вас. прийшов до PG із SQL Server, тож для мене це все нове (і дивне)
Нейт Андерсон,

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.