mysql中的auto_increment属性的ID,当删除一行数据后,怎么重新排序。考虑到后期的数据量可能有点大,希望哪位大哥帮帮忙,指教下小弟
14 个解决方案
set @num = 0;
seelct @num := @num + 1 ,* from tb;
备份数据(除了自增字段)->TRUNCATE tt;->插入记录
重新排序是因为id值不连续了,删除的行有可能是原来数据中的某一个中间行。
备份数据(除了自增字段)->TRUNCATE tt;->插入记录
你的方法估计也不行,我做的是计费系统,后期数据量肯定很大,数据表不敢随便删掉
关于2楼指出的结贴率的问题,因为本人是新号,只是最近才发的帖子,所以还在寻觅答案中,本人不用吝啬分,只求受教
重新排序就是这样:
id name
1 1
3 3
5 5
我现在想要使属性为auto_increment的id变成有序,即使
id name
1 1
2 3
3 5
如果这种需求,在任何一种数据库中都无法通过自增字段来实现。
你应该使用触发器来实现这个功能,而不是auto_increment
另外这种应用显然会造成系统极大的负担和不确定性。比如 表中已经有1到10万连续的记录,当删除ID=10的记录时,后续的9万9千9百9十条记录都需要去更新ID值,显然这不是一个好的应用方案。
楼主应该问一下,“
为什么要使ID值保持连续?”
1.保持连续的话,看着给人的感觉就舒服点(当然有人提倡残缺美)
2.我后面有个表中的数据我也想用auto_increment定义,这个表中的数据类似于我们使用的充值卡号,通过auto_increment定义索引,以后查找也方便点。另外如果充值卡号ID值不连续,以后可能会出现很多问题的
.....跟这些没关系!~也不会出问题!ID就是个标识而已。