AUTO_INCREMENT 초기화 및 재정렬
Mysql Workbench에서 AUTO_INCREMENT 초기화 및 재정렬
Mysql Workbench에서 AUTO_INCREMENT를 이용하여 데이터 추가 시 인덱스를 자동으로 부여하도록 설정할 수 있다.
미리 생성해놓은 USER 테이블에 데이터를 추가해주기 위해 INSERT 문을 13번 실행했다.
1 2 3 | insert into user (user_name, user_email, user_password, user_profileImagePath, user_sex, user_age, user_job, user_phoneNumber) values("홍길동", "mm@naver.com", "qqqq1111", "/image/userProfile/myPhoto.jpg", 1, 30, "프로그래머", 1011119999); |
아래와 같이 데이터가 추가된다.
여기서 user_id=10,11,12,13 튜플들을 삭제한 후 INSERT 문을 1회 실행하면 어떻게 될까?
1 2 3 4 5 6 7 | delete from user where user_id=10; delete from user where user_id=11; delete from user where user_id=12; delete from user where user_id=13; insert into user (user_name, user_email, user_password, user_profileImagePath, user_sex, user_age, user_job, user_phoneNumber) values("홍길동", "mm@naver.com", "qqqq1111", "/image/userProfile/myPhoto.jpg", 1, 30, "프로그래머", 1011119999); |
결과
user_id가 10이 아닌, 14부터 시작된다.
AUTO_INCREMENT은 자동으로 초기화 되지 않는다는 것을 알 수 있다.
따라서 순서대로 데이터를 정렬하기 위해서 정렬 후 초기화 작업을 해주어야 한다.
AUTO_INCREMENT가 적용된 컬럼값 재정렬
컬럼값을 정렬하기 위해서 아래와 같이 처리해준다.
1 2 | SET @CNT = 0; UPDATE USER SET USER.user_id = @CNT:=@CNT+1; |
SET @CNT = 0; UPDATE 테이블명 SET 테이블명.컬럼이름 = @CNT:=@CNT+1; |
AUTO_INCREMENT가 적용된 컬럼값 초기화
새로 데이터를 추가할 때, 본인이 원하는 인덱스부터 데이터를 생성되게 하려면 AUTO_INCREMENT를 초기화 해주면 된다.
위의 예제에서 user_id가 10부터 생성되게 하려면, 다음과 같은 sql문이 필요하다.
ALTER TABLE USER AUTO_INCREMENT = 10;
ALTER TABLE 테이블명 AUTO_INCREMENT=원하는순서; |
그러나 위에서 user_id = 14 인 데이터가 남아 있으므로 에러가 발생한다.
따라서 user_id = 14 인 데이터를 user_id = 10으로 수정해 준 수 AUTO_INCREMENT를 11부터 시작하도록 설정해주어야 한다.
그리고 AUTO_INCREMENT를 다시 초기화 해주면 된다.
최종결과