본문 바로가기

Database/PostgreSQL

PostgreSQL: Int id 충돌 문제 # auto increasement error # duplicate key value violates unique constraint

728x90
반응형

PostgreSQL에서 int pk를 auto increment (숫자 자동 증가)로 부여하는 경우,

종종 존재하는 id로 row를 추가하려는 경우가 있다.

 

예시 오류

SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "pages_pkey"
DETAIL: Key (id)=(4) already exists.

 

-> id auto increment를 마지막 int부터 다시 시작하도록 설정

 

psql shell을 진입 - 해당 데이터 베이스 사용 (\c database_name)

 

1.현재 sequence value를 확인하자

(참고: table 명이 pages 인 경우이다)

SELECT last_value, is_called FROM pages_id_seq;

 

2. sequence를 현재 존재하는 최대 값의 id부터 시작하도록 sql query 작성

SELECT setval('pages_id_seq', (SELECT COALESCE(MAX(id), 0) FROM pages));

 -> 1의 명령어로 변경사항 확인

 

참고 블로그:

https://www.vincentschmalbach.com/postgresql-sequence-error-manual-inserts-disrupt-auto-increment/

728x90
반응형