2010-05-20 12 views
79

Potrzebuję ustawić ścieżkę schematu w Postgresie, aby nie za każdym razem określać tabelę punktów schematu, np. schema2.table. Set ścieżka schematu:Trwale ustawić ścieżkę schematu PostgreSQL

SET SCHEMA PATH a,b,c 

tylko wydaje się pracować dla jednej sesji zapytań na mac, po tym, jak zamknąć okno zapytań sama ścieżka zmienne zestawy z powrotem do domyślnego.

Jak mogę to zrobić na stałe?

Odpowiedz

103

(A jeśli nie masz dostępu administratora do serwera)

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

Warto również zwrócić uwagę, aby wyraźnie NIE używać cytatów do wyliczenia a, b, c. Czwarta ręka przez ostatnie 15 minut ... – Jmoney38

77

Można ustawić domyślny search_path na poziomie bazy danych:

ALTER DATABASE <database_name> SET search_path TO schema1,schema2; 

lub na poziomie użytkownika lub roli:

ALTER ROLE <role_name> SET search_path TO schema1,schema2; 

Lub jeśli masz wspólny domyślny schemat we wszystkich bazach danych, możesz ustawić t on domyślnie w całym systemie w pliku konfiguracyjnym z opcją search_path.

Gdy baza danych jest tworzona jest domyślnie tworzony z ukrytym „Szablon” bazy danych o nazwie template1, można zmienić tej bazy danych, aby określić nową domyślną ścieżkę przeszukiwania dla wszystkich baz danych utworzonych w przyszłości. Można również utworzyć kolejną bazę szablonów i użyć CREATE DATABASE <database_name> TEMPLATE <template_name> do utworzenia baz danych.

+4

dla tych, którzy zastanawiają się z linii komend psql, możesz wyświetlić schematy według \ dn – BKSpurgeon

+1

Musisz odłączyć sesję i połączyć się ponownie, aby ustawienia zaczęły obowiązywać. – isapir

3

Josh jest poprawna, ale wyszedł z jedną odmianę:

ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2; 

ustawić ścieżkę przeszukiwania dla użytkownika, w jednej konkretnej bazy danych.

Powiązane problemy