首页  >  文章  >  数据库  >  当我们更改小于当前序列号的 AUTO_INCRMENT 值时,MySQL 返回什么?

当我们更改小于当前序列号的 AUTO_INCRMENT 值时,MySQL 返回什么?

PHPz
PHPz转载
2023-09-03 20:57:03702浏览

当我们更改小于当前序列号的 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删除