MySQL 컬럼에서 AUTO_INCREMENT를 사용하면 시퀀스 번호는 항상 기본값 1 또는 지정한 값에서 시작하여 오름차순으로 증가합니다.
그렇기 때문에 MySQL은 AUTO_INCREMENT 값을 현재 시퀀스 번호보다 작은 값으로 변경하는 것을 허용하지 않습니다. 다음 예의 도움으로 이해할 수 있습니다 -
예시
이 예에서 'emp1'이라는 테이블이 있고 테이블을 생성하는 동안 AUTO_INCREMENT VALUE를 100으로 지정한다고 가정합니다. 따라서 테이블에 값을 삽입한 후 시퀀스는 다음과 같이 100부터 시작합니다. 다음 쿼리의 출력에서 볼 수 있습니다. -
mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)
이제 ALTER TABLE 쿼리를 사용하여 AUTO_INCREMENT 값을 90으로 변경하려고 하면 쿼리가 정상이기 때문에 MySQL은 오류 및 경고를 반환하지 않지만 테이블에 새 값을 삽입할 때 MySQL은 지정된 값을 비교합니다. 현재 시퀀스 번호가 있는 AUTO_INCREMENT 값입니다. 지정된 AUTO_INCREMENT 값(90)이 현재 시퀀스 번호(101)보다 작기 때문에 MySQL은 다음 쿼리에서 관찰할 수 있는 102부터 새 값을 누적하기 시작합니다. -
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90; Query OK, 2 rows affected (0.31 sec) Records: 2 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Aryan'); Query OK, 1 row affected (0.08 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | +-----+---------+ 3 rows in set (0.00 sec)
반대로 AUTO_INCREMENT를 현재 시퀀스 번호보다 높은 값으로 변경하려고 하면 MySQL은 지정된 값에서 새 값을 누적하기 시작합니다.
테이블 'emp1'에서 더 명확하게 하기 위해 AUTO_INCREMENT 값을 현재 시퀀스 번호보다 높은 108로 변경하므로 MySQL은 지정된 AUTO_INCREMENT 값, 즉 108부터 새로 삽입된 값을 누적하기 시작합니다.
mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 108; Query OK, 3 rows affected (0.30 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> Insert into emp1(name) values('Daksh'); Query OK, 1 row affected (0.04 sec) mysql> Insert into emp1(name) values('Yashraj'); Query OK, 1 row affected (0.06 sec) mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | | 102 | Aryan | | 108 | Daksh | | 109 | Yashraj | +-----+---------+ 5 rows in set (0.00 sec)