當我們在MySQL列上使用AUTO_INCREMENT時,序列號始終按照升序遞增,從默認值1或我們指定的值開始。
這就是為什么MySQL不允許將AUTO_INCREMENT值更改為小于當前序列號的值的原因。可以通過以下示例來理解:
示例
在這個示例中,假設(shè)我們有一個名為’emp1’的表,在創(chuàng)建表時我們將AUTO_INCREMENT值指定為100。因此,在插入表中的值之后,序列將從100開始,如下面查詢的輸出所示:
mysql> Select * from emp1; +-----+---------+ | id | NAME | +-----+---------+ | 100 | Sohan | | 101 | Harshit | +-----+---------+ 2 rows in set (0.00 sec)
登錄后復制
現(xiàn)在,當我們嘗試借助 ALTER TABLE 查詢將 AUTO_INCRMENT 值更改為 90 時,MySQL 不會返回錯誤和警告,因為查詢正常,但當我們在表中插入新值時,MySQL 會比較指定的值A(chǔ)UTO_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 返回什么?的詳細內(nèi)容,更多請關(guān)注www.92cms.cn其它相關(guān)文章!