當我們修改 AUTO_INCREMENT 值為小於當前序列號的值時,MySQL 會返回什麼?
當我們在 MySQL 列上使用 AUTO_INCREMENT 時,序列號總是從預設值 1 或我們指定的數值開始,按升序遞增。
因此,MySQL 不允許將 AUTO_INCREMENT 值更改為小於當前序列號的值。這可以透過以下示例來理解:
示例
在這個示例中,假設我們有一個名為 'emp1' 的表,並且在建立表時我們將 AUTO_INCREMENT 值指定為 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)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP