当我们更改小于当前序列号的 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 |
+-----+---------+
二 rows in set (0.00 sec)
登录后复造

而今,当咱们测验考试还助 ALTER TABLE 盘问将 AUTO_INCRMENT 值变更为 90 时,MySQL 没有会返归错误以及告诫,由于盘问畸形,但当咱们正在表外拔出新值时,MySQL 会对照指定的值AUTO_INCRMENT 值取当前序列号。因为指定的 AUTO_INCRMENT 值 (90) 年夜于当前序列号 (101),MySQL 入手下手从 10二 入手下手乏积新值,那否以从下列盘问外不雅察到 -

mysql> ALTER TABLE EMP1 AUTO_INCREMENT = 90;
Query OK, 两 rows affected (0.31 sec)
Records: 两 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 |
| 10两 | 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 |
| 10二 | Aryan   |
| 108 | Daksh   |
| 109 | Yashraj |
+-----+---------+
5 rows in set (0.00 sec)
登录后复造

以上等于当咱们更动年夜于当前序列号的 AUTO_INCRMENT 值时,MySQL 返归甚么?的具体形式,更多请存眷萤水红IT仄台此外相闭文章!

点赞(39) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部