首頁  >  文章  >  資料庫  >  當我們更改小於目前序號的 AUTO_INCRMENT 值時,MySQL 會回傳什麼?

當我們更改小於目前序號的 AUTO_INCRMENT 值時,MySQL 會回傳什麼?

PHPz
PHPz轉載
2023-09-03 20:57:03701瀏覽

当我们更改小于当前序列号的 AUTO_INCRMENT 值时,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_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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除