MySQL删除某列后编号不连续

您所在的位置:网站首页 mysql删掉字段 MySQL删除某列后编号不连续

MySQL删除某列后编号不连续

2023-09-04 21:08| 来源: 网络整理| 查看: 265

经常操作MySQL数据库的话,会遇到这样的情况:原本的id设置为自增长的AUTO_INCREMENT,在删除几行记录,重新插入记录后,却发现id列仍延续原来删除后id。 接下来我们来重现这样的错误并使用ALTER命令来改变这样的结果。 这样有一个表account,里面有两行测试记录

mysql> SELECT * FROM account; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | aaa | 900 | | 2 | bbb | 1100 | +----+------+-------+

我们删除一行

mysql> DELETE FROM account WHERE id = 2; Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM account; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | aaa | 900 | +----+------+-------+

再插入一行

mysql> INSERT INTO account(name,money) -> VALUES('bbb',1000); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM account; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | aaa | 900 | | 3 | bbb | 1000 | +----+------+-------+

可以看到,新插入的一行的id值并不是2,而是3 这个时候,我们可以通过ALTER命令来改变当前MySQL自增列的开始序号 为了直观我们把刚插入的一行删除掉

mysql> DELETE FROM account WHERE id = 3; Query OK, 1 row affected (0.01 sec)

在使用ALTER命令

mysql> ALTER TABLE account AUTO_INCREMENT=2; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0

重新插入一行记录

mysql> INSERT INTO account(name,money) -> VALUES('bbb',1000); Query OK, 1 row affected (0.01 sec) mysql> SELECT * FROM account; +----+------+-------+ | id | name | money | +----+------+-------+ | 1 | aaa | 900 | | 2 | bbb | 1000 | +----+------+-------+ 2 rows in set (0.00 sec)

可以看到,这个时候,编号的顺序就有可以我们希望的连续性。

多说一嘴,当设置的id值为AUTO_INCREMENT的时候,数据库会帮助我们生成唯一的标识,这些标识跟连续性没有什么关系。所以我们就能够走出这样的误区:“自动编号只代表数据库只保证du自动建立的编号是唯一, 并不保证编号是连续的”,所以也能够明白为什么MySQL对于删除后某列编号不连续这样的原因了。

参考 mysql删除数据记录后如何使自动编号从1开始 重置Mysql自增列的开始序号



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3