Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

현재 시퀀스 번호보다 작은 AUTO_INCREMENT 값을 변경할 때 MySQL은 무엇을 반환합니까?

<시간/>

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)