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?

Author: lreeder, 2010-05-20

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:

  1. Quando um nome de esquema não é simples, ele precisa ser embrulhado em aspas duplas.
  2. 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 seu search_path.
 117
Author: Milen A. Radev, 2018-04-18 00:15:25

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.

 85
Author: joshperry, 2015-03-02 10:12:08
O Josh tem razão, mas esqueceu-se de uma variação:
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.

 9
Author: Chris Johnson, 2017-10-04 20:53:35