테이블 Primary key 변경 오류

00_8_3·2024년 2월 25일
0

데이터베이스

목록 보기
4/4

문제

primary key로 [a_id, b_id]로 설정되어 있고

이미 데이터가 쌓여있는 상태에서

새로운 primary key로 변경할 때

  1. 옵셔널 id 컬럼 추가
  2. 모든 row에 id 값 update
  3. id를 Required로 수정
  4. 기존 primary key를 제거 및 id를 primary key 지정.

위와 같은 방법으로 성공적으로 id 키를 수정했다 생각했지만

테이블에 새 row를 insert 할 때 constraint 오류가 발생했다.

이유

autoincrement를 가지는 값은 sequence로 관리가 된다.

primary key로 지정 했을 때의 테이블 sequence의 last_value는 1인데

위의 2번을 실행 할 때 코드 상에서 +1로 올려준 것은 last_value에 반영이 안되었기 때문에

새로운 데이터가 들어올 때 이미 id가 1이 있는데 1로 생성하려 해서 생긴 문제였다.

해결 방법

  1. 직접 DB GUI 프로그램 들어가서 수정하고 저장.
  2. SELECT last_value FROM "테이블이름_id_seq";으로 확인 하고
    select setval('"테이블이름_id_seq"', 600, true); +1한 값으로 수정.

0개의 댓글