MySQL删除某列后编号不连续 |
您所在的位置:网站首页 › mysql删掉字段 › MySQL删除某列后编号不连续 |
经常操作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 |