[PostgreSQL] search_path 세팅을 통한 스키마 표기 생략

식빵·2023년 5월 18일
0

postgresql-memo

목록 보기
22/34
post-thumbnail

select * from <스키마>.<테이블>

여러 스키마로 생성하다보면 테이블 조회 시에 아래와 같이 해야 됩니다.

select * from hr.emp;
select * from sw.shoplist;
select * from gd.customer;
...

사실 스키마가 엄청 많아지면 저 방식이 훨배 사용하기 좋지만,
만약 자신이 테이블이 3개 정도밖에 안된다고 귀찮을 수 있습니다.
하지만 search_path 를 수정하면 앞에 붙는 schema 명칭을 생략할 수 있습니다.



search_path 수정

-- public, test 스키마 동시 사용!
-- 다만 쿼리를 수행할 때 우선순위가 test, public 순이 된다.
set search_path to hr,sw, public;
show search_path;

-- 원상복구 시키기
set search_path to default;

이렇게 되면 테이블 명칭만 입력하면 DBMS 가 해당 테이블을 찾을 때
hrswpublic 순으로 찾게 됩니다.
만약 public 에서도 찾지 못하면 평소처럼 에러를 뱉어냅니다.

그런데 이 방식은 각 session 당 딱 한번만 적용되고,
이후에 다시 접속하면 이 설정은 사라집니다. session 이 잡힐 때마다 자동으로
search_path 가 적용되는 방법은 없을까요?



session 접속 시,search_path 자동 세팅시키기

ALTER ROLE jpa SET search_path = programmer,public;



일하는 곳에서는 쓰지 마시길 바랍니다.

이건 지극히 제 개인적인 생각입니다.

일하는 곳에서는 search_path 를 세팅해서 앞의 schema 를 생략하는
방식은 사용하지 마시길 바랍니다 (public 제외).

실제로 일하는 곳에서는 정~말 많은 스키마가 존재할 수 있습니다.
그런 곳에서 스키마가 표기되지 않고 테이블 명만 딸랑 있으면
생각보다 골치 아픈 일이 많이 생길 겁니다 😥

profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글