如何更正MySQL表ID?

时间:2011-10-22 13:51:37

标签: php mysql

我有一个名为“posts”的表,它包含500个帖子,但ID不是序列 像:

1
3
9
22
446
....
etc.

那是因为我从表中删除了一些帖子。

那我怎样才能重新纠正ids?

3 个答案:

答案 0 :(得分:3)

不应更改主键ID ,尤其是在其他表中引用它们时。

如果您需要一个类似于行号的属性,可以为其添加另一个字段

例如,发票已编号,但发票编号不应是主键,因为您希望自由重新编号其中一个而不会丢失其他连接信息,例如其他表中的发票详细信息。

答案 1 :(得分:1)

最简单的解决方法是创建一个快速脚本来遍历表并更新id列然后在数据库上运行:ALTER TABLE tbl AUTO_INCREMENT = 100;

答案 2 :(得分:-1)

永远不会更改ID!

ID是记录一起生存和死亡的记录。这就是为什么它被称为id,它是 IDENTITY

在现实生活中,你无法改变事物的身份,你不会在数据库中做到这一点。

从哲学的角度来看,这是一个非常糟糕的主意,这也会导致实际问题。即使你要重新编号数据库中所有表中的ID,旧的ID仍然可以在某个地方存活(然后造成很大的混乱):

    遍布互联网的网址
  • 在您的日志中
  • 备份中的
  • 在其他数据库副本中。

此外, ID必须仅用于识别,不得用于其他任何内容。例如:您使用ID来定义某些字典的顺序,您通常会将其排序。然后你需要添加一个新项目,该项目必须在ID为20和21的项目之间呈现.BAD解决方案是更改ID> = 21的记录的ID。好的解决方案是添加新列订单,它定义了商品的顺序,可以在需要时进行更改。

记住:

ID必须仅用于身份识别而不是其他任何内容!

永远不要更改ID!