我有一个名为“posts”的表,它包含500个帖子,但ID不是序列 像:
1
3
9
22
446
....
etc.
那是因为我从表中删除了一些帖子。
那我怎样才能重新纠正ids?
答案 0 :(得分:3)
不应更改主键ID ,尤其是在其他表中引用它们时。
如果您需要一个类似于行号的属性,可以为其添加另一个字段。
例如,发票已编号,但发票编号不应是主键,因为您希望自由重新编号其中一个而不会丢失其他连接信息,例如其他表中的发票详细信息。
答案 1 :(得分:1)
最简单的解决方法是创建一个快速脚本来遍历表并更新id列然后在数据库上运行:ALTER TABLE tbl AUTO_INCREMENT = 100;
答案 2 :(得分:-1)
ID是记录与一起生存和死亡的记录。这就是为什么它被称为id,它是 IDENTITY !
在现实生活中,你无法改变事物的身份,你不会在数据库中做到这一点。
从哲学的角度来看,这是一个非常糟糕的主意,这也会导致实际问题。即使你要重新编号数据库中所有表中的ID,旧的ID仍然可以在某个地方存活(然后造成很大的混乱):
此外, ID必须仅用于识别,不得用于其他任何内容。例如:您使用ID来定义某些字典的顺序,您通常会将其排序。然后你需要添加一个新项目,该项目必须在ID为20和21的项目之间呈现.BAD解决方案是更改ID> = 21的记录的ID。好的解决方案是添加新列订单,它定义了商品的顺序,可以在需要时进行更改。
记住: