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;
Armando

답변:


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 분 동안의
직접 이적

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

오 축복합니다. 이 모두 나에게 새로운 (이상한) 그래서 SQL 서버에서 PG로 온
네이트 앤더슨

24

조쉬는 맞지만 한 가지 변형을 생략했습니다.

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

하나의 특정 데이터베이스에서 사용자의 검색 경로를 설정하십시오.


매우 유용합니다. 감사합니다
Alejandro Teixeira Muñoz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.