mysql 자동 증가 ID 열 값 변경
Nov 20 2020
gpid AUTO_INCREMENT NOT NULL UNIQUE
열 이있는 mysql 테이블이 있습니다.
이 테이블 (5 천만 개 이상의 항목이 있음)을 채운 후 AUTO_INCREMENT
, IntegrityError로 인해 트랜잭션이 실패하면 mysql이 여전히 열을 증가 시킨다는 것을 깨달았습니다 .
결과의 차이이다 AUTO_INCREMENT
과 열 gpid
(exemple로부터 값을 점프 gpid == 3
에 gpid == 5
두 개의 연속 된 행 사이). 이것은 기계에 대한 문제는 아니지만 내 동료와 나에게 해당됩니다.이 열의 목적은 무엇보다도 테이블의 정확한 행 수를 나타내는 것이 었습니다.
gpid
테이블을 삭제하거나 다시 채울 필요없이 행이 테이블에 삽입 된 순서를 고려하여 모든 열 값을 적절한 범위 (1에서 53926669까지) 로 변경하는 방법이 있습니까? 리필하는 데 오랜 시간이 걸립니다.
감사합니다.
답변
GMB Nov 20 2020 at 13:29
MySQL은 다른 데이터베이스와 마찬가지로 자동 증가 열에 간격이 없음을 보장하지 않습니다. 테이블 번호를 다시 지정하면 특정 시점에 문제가 해결 될 수 있지만 향후 간격이 나타날 수 있습니다.
단조롭게 증가하는 시퀀스를 원하면 자동 증가가 필요한 것이 아닙니다. 대신 예를 들어보기를 만들고 다음을 사용할 수 있습니다 row_number()
.
create view myview as
select t.*, row_number() over(order by gpid) as new_gpid
from mytable t