얘는 왜 한방쿼리가 없냐;
Oracle은
Select '메세지'||column_name||'~~~;'
from Table
where 조건1, 조건2;
주면 한방쿼리가 잘 나온다.
정말 편한데...요즘들어 PostgreSQL이 내 업무에 추가가 많이 됐다...
근데 하다가 실수로 postgres계정으로 테이블을 다 생성해버려서 owner가 다 틀려졌다...
이거 언제 다 바꾸지..?
알아보다가 결국 PostgreSQL 엔지니어의 도움을 받아 쿼리를 알게되었다.
DO
$do$
DECLARE
r RECORD;
BEGIN
FOR r IN select tablename from pg_tables where schemaname='public'
LOOP
EXECUTE 'ALTER TABLE '||quote_ident('public')||'.'||quote_ident(r.tablename)||' owner to [바꿀 owner];';
END LOOP;
END
$do$;
위 쿼리를 실행하면 원했던 스키마 내의 테이블 owner를 원하는 owner로 싹 한번에 바꿀 수가 있다.
FOR 절에 있는 select를 진행해본 후 대상 테이블이 맞는지 검토 후 실행할것.
Sequence usage 부여
DO
$do$
DECLARE
r RECORD;
BEGIN
FOR r IN select sequencename from pg_sequences where sequenceowner='[owner]'
LOOP
EXECUTE 'grant usage on '||quote_ident('public')||'.'||quote_ident(r.sequencename)||' to [owner];';
END LOOP;
END
$do$;
위 쿼리는 해당 DB업그레이드 후에 Sequence에 대한 usage권한이 같이 안가서 에러가 발생했었고 이것을 해결하려고 사용했음~
EXECUTE -> RAISE NOTICE로 바꾸면 해결!!