如果身份证号码出了问题,我能修一下吗


Can I fix id number if it goes out of order?

可能重复:
id的碎片化';mysql 中的s(auto_increment列)

我有一个新闻门户,每条新闻都有自己的id,现在MySql 中有515篇文章

但几天前我搞得一团糟,所以当添加消息时,id显示2339,我总是要手动编辑到516。

有没有一种方法可以修复它,这样下一篇文章将使用id 517而不是2340?

primary key应仅用于映射关系和唯一标识行。除非您已经将ID字段设置为foreign key,否则重新排序可能会破坏数据库的大部分功能。

简而言之,是的,你的要求是可能的,但在数据库设计中从来都不是一个好主意不要让虚荣妨碍建立一个好的数据库。

现在,如果出于某种疯狂的原因,您仍然想这样做,那么最好使用PHP脚本从表中选择*并按ID排序。然后让它循环并将每行的ID列更新为您想要的任何列(例如,从0开始并递增)。您很可能会遇到的问题是,primary key是唯一的,并且您的ID不是按完美的增量顺序排列的,因此您可能必须先将ID设置为常规列,然后在操作后将其切换回primary keyunique key

我认为您只是想更改自动递增id的当前索引?

如果你有PhpMyAdmin,你可以点击你的表,然后转到"操作"选项卡。你会看到一个名为"AUTO_INCREMENT"的字段。您需要将其更改为517,而不是2340。

或者,使用SQL:

ALTER TABLE articles SET AUTO_INCREMENT = 517

编辑:我看到很多评论说这根本不重要。这是真的,它不会影响任何事情,可能永远不应该这样做。然而,如果你仍然决定继续前进,我至少提供了一个解决方案。