개발하면서 부딪혔던 문제들/DB

[DB][Mariadb 활용기] auto_increment 사용 시 주의사항

desmort68 2018. 7. 24. 20:39

DB에 계속해서 자료를 넣고 이를 카운트하기 위한 데이터 타입이 필요했다.

Int로는 작을 것 같아서 Int보다 큰 Bigint를 사용하기로 결정.

Bigint는 8바이트의 자료형으로 대략 -922경(-9220000조) ~ 922경(9220000조) 까지 숫자를 담을 수 있다.

다른 자료형과 범위를 알고 싶으면 아래 사이트를 방문해 보도록 하자.


(MySQL 데이터형 및 크기: https://blog.lael.be/post/115)



Bigint로 query문을 짜 비교를 해보려고 했더니 아무 결과도 나오지 않았다. 비교 구문이 일반적인 int랑 다른지 알고 글을 쓰기 시작했지만


결과는 auto_increment로 인해 기존 데이터가 지워진 후에도 이 column 값은 전의 값에서 계속 카운트되었다는 점이다.


그렇기 때문에 auto_increment를 다시 설정해줘야 한다.


이러한 auto_increment를 재설정 해주는 방법은 다음과 같다.

  1. ALTER TABLE [테이블 명] AUTO_INCREMENT=1;

그렇지만 이는 전부 delete를 할 때이고 특정 부분만을 delete를 할 시 auto_increment에 의해 기존 데이터와 충돌이 일어난다.

그렇기 때문에 아래와 같이 재인덱싱을 해주는 게 좋다.


  1. ALTER TABLE [테이블 명] AUTO_INCREMENT=1;
  2. SET @COUNT = 0;
  3. UPDATE [테이블 명] SET [AUTO_INCREMENT 열 이름] = @COUNT:=@COUNT+1;

출처: https://blog.jooylee.com/p/20171008467