Definir Permanentemente A Localização Do Esquema Do Postgresql
Preciso de definir a localização do esquema em Postgres para que não especifique sempre a tabela de pontos do esquema, por exemplo schema2.table
.
Definir a localização do esquema:
SET SCHEMA PATH a,b,c
só parece funcionar para uma sessão de consulta no mac, depois de fechar a janela de consulta a variável path volta a ser predefinida.
Como posso torná-lo permanente?3 answers
(e se não tiver acesso administrativo ao servidor)
ALTER ROLE <your_login_role> SET search_path TO a,b,c;
Duas coisas importantes para saber:
- Quando um nome de esquema não é simples, ele precisa ser embrulhado em aspas duplas.
- a ordem em que você define esquemas padrão
a, b, c
importa, pois é também a ordem em que os esquemas serão procurados por tabelas. Então, se você tiver o mesmo nome de tabela em mais de um esquema entre os valores por omissão, não haverá ambiguidade, o servidor sempre usará a tabela do primeiro esquema que indicou para o seusearch_path
.
Você pode definir o valor por omissão search_path
ao nível da base de dados:
ALTER DATABASE <database_name> SET search_path TO schema1,schema2;
Ou ao nível do utilizador ou do papel:
ALTER ROLE <role_name> SET search_path TO schema1,schema2;
Ou se tiver um esquema padrão comum em todas as suas bases de dados, poderá definir o predefinido a nível do sistema no ficheiro de configuração com a opção search_ Path.
Quando é criada uma base de dados, esta é criada por omissão a partir de uma base de dados escondida chamada template1 , poderá alterar essa base de dados para indicar uma nova localização predefinida para todos bases de dados criadas no futuro. Você também pode criar outro banco de dados modelo e usar CREATE DATABASE <database_name> TEMPLATE <template_name>
para criar suas bases de dados.
ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;
Defina o caminho de pesquisa para o utilizador, numa dada base de dados.