我正在使用MySQL,并且有一个包含3列的表:
page_id title content
在page_id列中,我检查了AUTO_INCREMENT和PRIMARY。 插入到此列后,它看起来像这样:
1
2
3
...
但是,例如,如果我删除第二行,则会得到:
1
3
...
为什么? 例如,我希望在删除第二行时得到:
1
2
...
,并且ID自动更新。 我该如何解决?
谢谢
答案 0 :(得分:0)
删除行后保留索引是一种如果另一个表具有指向该表的外键的链接,则保持正确的链接。编辑:如评论中所述:如果有效,则无需修复。
如果您确实要对主键进行重新排序,请首先备份您的数据库数据,然后可以使用以下查询:
SET @id = 0;
UPDATE `table` SET `table`.`page_id` = @id:= @id + 1;
ALTER TABLE `users` AUTO_INCREMENT = 1;
请小心 ,但是,如果您这样做有其他依赖于page_id值的表,这将是一件令人毛骨悚然的事情。在这种情况下,您还必须更新这些链接,例如使用ON UPDATE CASCADE
引用操作。请here 在执行此操作之前