매번 스키마 도트 테이블을 지정하지 않도록 Postgres에서 스키마 경로를 설정해야합니다 schema2.table
. 스키마 경로를 설정하십시오.
SET SCHEMA PATH a,b,c
쿼리 창을 닫은 후 경로 변수가 기본값으로 다시 설정되면 Mac에서 하나의 쿼리 세션에서만 작동하는 것 같습니다.
영구적으로 만들려면 어떻게해야합니까?
답변
(그리고 서버에 대한 관리자 액세스 권한이없는 경우)
ALTER ROLE <your_login_role> SET search_path TO a,b,c;
알아야 할 두 가지 중요한 사항 :
- 스키마 이름이 단순하지 않은 경우 큰 따옴표로 묶어야합니다.
- 기본 스키마를 설정
a, b, c
하는 순서는 스키마가 테이블을 찾는 순서이기도하기 때문에 중요합니다. 따라서 기본값 중 둘 이상의 스키마에 동일한 테이블 이름이 있으면 모호성이 없으며 서버는 항상에 대해 지정한 첫 번째 스키마의 테이블을 사용합니다search_path
.
답변
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>
를 만들고 데이터베이스를 만드는 데 사용할 수도 있습니다 .
답변
조쉬는 맞지만 한 가지 변형을 생략했습니다.
ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2;
하나의 특정 데이터베이스에서 사용자의 검색 경로를 설정하십시오.