[sql] PostgreSQL 스키마 경로를 영구적으로 설정

매번 스키마 도트 테이블을 지정하지 않도록 Postgres에서 스키마 경로를 설정해야합니다 schema2.table. 스키마 경로를 설정하십시오.

SET SCHEMA PATH a,b,c

쿼리 창을 닫은 후 경로 변수가 기본값으로 다시 설정되면 Mac에서 하나의 쿼리 세션에서만 작동하는 것 같습니다.

영구적으로 만들려면 어떻게해야합니까?



답변

(그리고 서버에 대한 관리자 액세스 권한이없는 경우)

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

알아야 할 두 가지 중요한 사항 :

  1. 스키마 이름이 단순하지 않은 경우 큰 따옴표로 묶어야합니다.
  2. 기본 스키마를 설정 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;

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


답변