DataBase

[Mysql] Auto_Increment 값 초기화

Auto_Increment로 잡아놓은 gid가 잘 잡혀있는 상황이다.

gid가 4인 람머스를 지워보자

delete from goods where gid = 4

문도를 goods에 입력해보자.

insert into goods (gname, gcontent, gcnt, getc) values ('문도','라면먹는다', 40,'두번먹는다');

 

중간에 빠진 4부터 gid가 들어가는 것이 아닌 13으로 시작하는 모습이다.

(12부터 시작해야 하지만 미리 테스트하느라 auto_increment값이 13인 상황이었다.)

 

그럼 어떻게 초기화 해야할까?

-- delete로 auto_increment한 gid값의 중간이 비었을 경우
-- 다시 재정렬 해주는 sql문
-- safety 해제 (쉽게말해 한번에 여러 row 를 업데이트할 때, 막아두는게 Safe mode On 입니다.)
set sql_safe_updates=0;
-- cnt 변수 초기화
set @cnt = 0;
-- cnt를 이용해서 gid를 처음부터 ++ 해가면서 초기화
update goods set goods.gid = @cnt:=@cnt+1;

gid가 잘 정리된 모습이다.

 

하지만 여기서 auto_increment의 시작값을 재 조정해줄 필요가 있다.

 

 

현재 gid의 최대값을 구하고 이를 바탕으로 +1 된 값으로 바꿔주면 끝이난다.

Alter table goods auto_increment = 12;

 

이제 임의로 입력값을 넣어 마무리 확인을 하자.

 

12부터 잘 들어가는 모습이다.

 

다시 safety mode를 on으로 바꿔주고 마무리 하자.

set SQL_SAFE_UPDATES = 1;