여러 스키마로 생성하다보면 테이블 조회 시에 아래와 같이 해야 됩니다.
select * from hr.emp;
select * from sw.shoplist;
select * from gd.customer;
...
사실 스키마가 엄청 많아지면 저 방식이 훨배 사용하기 좋지만,
만약 자신이 테이블이 3개 정도밖에 안된다고 귀찮을 수 있습니다.
하지만 search_path
를 수정하면 앞에 붙는 schema
명칭을 생략할 수 있습니다.
-- public, test 스키마 동시 사용!
-- 다만 쿼리를 수행할 때 우선순위가 test, public 순이 된다.
set search_path to hr,sw, public;
show search_path;
-- 원상복구 시키기
set search_path to default;
이렇게 되면 테이블 명칭만 입력하면 DBMS 가 해당 테이블을 찾을 때
hr
➔ sw
➔ public
순으로 찾게 됩니다.
만약 public 에서도 찾지 못하면 평소처럼 에러를 뱉어냅니다.
그런데 이 방식은 각 session 당 딱 한번만 적용되고,
이후에 다시 접속하면 이 설정은 사라집니다. session 이 잡힐 때마다 자동으로
search_path 가 적용되는 방법은 없을까요?
ALTER ROLE jpa SET search_path = programmer,public;
이건 지극히 제 개인적인 생각입니다.
일하는 곳에서는 search_path
를 세팅해서 앞의 schema
를 생략하는
방식은 사용하지 마시길 바랍니다 (public 제외).
실제로 일하는 곳에서는 정~말 많은 스키마가 존재할 수 있습니다.
그런 곳에서 스키마가 표기되지 않고 테이블 명만 딸랑 있으면
생각보다 골치 아픈 일이 많이 생길 겁니다 😥