에러
- ERROR: duplicate key value violates unique constraint
원인
- nextval() 등을 통해 primary key를 생략한 채로 자동 시퀀스를 실행하다 보면 시퀀스 객체와 테이블 pk 값에 차이가 생기는 경우가 종종 발생
- primary key 값은 유니크해야 하는데 이미 존재하는 seq를 insert 하려고 하는 경우에 발생
해결
-- 오류 난 테이블의 최대 키 값 조회
select max(seq) from ${테이블명};
-- nextval 함수가 있는 시퀀스 객체 값 조회
select nextval('${시퀀스명}'::regclass);
-- 두 값이 불일치하는 경우 시퀀스 객체 값으로 변경
select setval('${시퀀스명}', (select max(seq) from ${테이블명}))
'Database' 카테고리의 다른 글
PostgreSQL 함수(Function) (0) | 2023.05.10 |
---|---|
PostgreSQL GIN Index (0) | 2023.01.30 |
PostgreSQL 테이블 소유자 변경 (0) | 2023.01.11 |
PostgreSQL 테이블 청소 (0) | 2022.12.21 |
인메모리 데이터베이스(Redis) (0) | 2022.10.23 |