如果ID号失序,我可以修改它吗?

时间:2012-02-02 16:16:17

标签: php mysql

  

可能重复:
  Fragmentation of id's (auto_increment column) in mysql

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

但是几天前我做了一些乱七八糟的事情,所以在添加id正在显示的新闻时 2339我总是要手动编辑到516。

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

2 个答案:

答案 0 :(得分:3)

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

简而言之,您所要求的是可能的,但在数据库设计方面绝对不是一个好主意。不要让虚荣心妨碍建立一个好的数据库。

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

答案 1 :(得分:1)

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

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

或者,使用SQL:

ALTER TABLE articles SET AUTO_INCREMENT = 517
编辑:我看到很多评论说这根本不重要。这是真的,它不会影响任何事情,也许永远不应该这样做。但是,如果您仍然决定继续推进,我至少提供了一个解决方案。