COPY 명령등을 사용하여 데이터 이관 작업 진행 시 ERROR: permission denied for schema 에러 발생하는 경우가 있습니다 이런 경우 외래키(foreign key)가 설정되어 있는지 확인이 필요합니다 INSERT 하려는 테이블이 다른 테이블의 데이터를 참조하는 FK(외래키)가 생성되어 있을 때 발생합니다 : 참조되는 테이블의 owner가 작업을 실행하는 계정과 동일하다면 발생하지 않고 다른 경우 발생 PostgreSQL에서는 트리거를 사용하여 외래키(참조 무결성 제약)가 구현되므로 trigger를 비활성화 해주면 됩니다 |
방법 1
세션 파라미터 변경
session_replication_role 파라미터를 replica로 설정하면 replica 상태의 트리거만 활성화되고 나머지는 비활성화되어 작업진행 가능 합니다
-- 작업 세션의 설정 변경하여 모든 트리거 비활성
SET session_replication_role = 'replica';
-- 원복(세션 레벨이라 접속 종료하면 됨)
SET session_replication_role = 'origin' ;
방법 2
테이블별 트리거 활성/비활성
작업 대상 테이블의 트리거
비활성화 -> 작업 -> 활성화
단계로 진행 가능 합니다
-- 테이블 트리거 비활성
ALTER TABLE sk.tab1 DISABLE TRIGGER ALL;
-- 테이블 트리거 활성
ALTER TABLE sk.tab1 ENABLE TRIGGER ALL;
'DBMS > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 기본 권한 설정 default privilege(권한 자동 부여) (0) | 2024.02.15 |
---|---|
[PostgreSQL] pg_hba.conf 우선순위 (2) | 2024.02.01 |
[PostgreSQL] 열을 행으로 변환하기 (2) | 2024.01.04 |
[PostgreSQL] ANY 연산자 (1) | 2024.01.01 |
[PostgreSQL] 자동 증가(Auto Increment) 컬럼 사용법 (1) | 2023.12.15 |
댓글