이번 포스팅은 근본적인 문제 해결은 아니지만, PK의 값을 초기화하고 1부터 연속적인 수로 바꾸는 방법에 대한 글입니다.
서론
보통 스키마를 구성할 때, PK에 `auto_increment`를 설정하는 경우가 많습니다.
`auto_increment`는 편리함을 제공하지만 `INSERT IGNORE 문`을 사용했을 때, 또는 `UPSERT 문`을 사용했을 때 따라오는 `ON DUPLICATE KEY UPDATE` 에 의해 중복 데이터를 INSERT 하지 못함에도 PK 값은 `+1 씩 증가`하게 됩니다.
auto_increment 초기화 쿼리
ALTER TABLE [테이블] AUTO_INCREMENT=1; -- [테이블]의 AUTO_INCREMENT를 1로 초기화한다.
SET @CNT = 0; -- @CNT 변수의 값을 0으로 초기화한다.
UPDATE [테이블]
SET [테이블의 PK] = @CNT:=@CNT+1; -- [테이블의 PK]를 위에서 저장한 @CNT 값을 이용해 +1 씩 증가시킨다.
위의 쿼리를 사용하면 PK를 1부터 연속적인 숫자로 UPDATE 하여 쓸 수 있습니다.
읽어주셔서 감사합니다.
'Database > MySQL' 카테고리의 다른 글
[스터디] Real MySQL 8.0 1권 - 5장 트랜잭션과 잠금 정리 (0) | 2024.09.23 |
---|---|
[MySQL] INSERT 할 때, 마지막 PK 값에서 1씩 증가시키는 방법 (0) | 2023.04.27 |
[MySQL] 테이블 내 중복 데이터 삭제 (0) | 2023.04.27 |
[MySQL] 프로세스 확인과 프로세스 죽이기 (2) | 2022.09.30 |
[MySQL] 계정 조회, 계정 생성, 계정 삭제, 권한 조회, 권한 부여, 권한 삭제 (0) | 2022.09.30 |