當我們在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_INCRMENT 值更改為90 時,MySQL 不會傳回錯誤和警告,因為查詢正常,但當我們在表中插入新值時,MySQL 會比較指定的值AUTO_INCRMENT 值與目前序號。由於指定的AUTO_INCRMENT 值(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_INCRMENT 變更為高於目前序號的值,那麼MySQL 將從指定值開始累積新值。
為了在表中更清楚地顯示'emp1' 我們將AUTO_INCRMENT 值改為108,高於目前序號,因此MySQL 開始從指定的AUTO_INCRMENT 值(即從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)
以上是當我們更改小於目前序號的 AUTO_INCRMENT 值時,MySQL 會回傳什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!