我有一个带有自动增量主键的MySQL表。我删除了表中间的一些行。现在,例如,在ID列中有类似这样的内容: 12,13,14,19,20。我删除了15,16,17和18行。
我想重新分配/重置/重新排序主键,以便具有连续性,例如,将19设置为15,将20设置为16,依此类推。
我该怎么做呢?
发布于 2009-04-11 16:20:58
您可以删除主键列,然后重新创建它。然后,应按顺序重新分配所有in。
然而,在大多数情况下,这可能不是一个好主意。如果您有其他表具有指向此表的外键,那么它肯定不会工作。
发布于 2011-03-26 04:21:42
即使这个问题看起来很老了,我也会为那些在这里搜索的人发布一个答案。
SET @count = 0;
UPDATE `users` SET `users`.`id` = @count:= @count + 1;
如果该列在其他表中用作外键,请确保在这些表中使用ON UPDATE CASCADE
而不是默认的ON UPDATE NO ACTION
作为外键关系。
此外,为了重置AUTO_INCREMENT
计数,您可以立即发出以下语句。
ALTER TABLE `users` AUTO_INCREMENT = 1;
对于MySQL,它会将该值重置为MAX(id) + 1
。
发布于 2010-06-26 07:19:19
要重置我的用户表的ID,我使用以下SQL查询。上面已经说过,这将破坏您与任何其他表的任何关系。
ALTER TABLE `users` DROP `id`;
ALTER TABLE `users` AUTO_INCREMENT = 1;
ALTER TABLE `users` ADD `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST;
https://stackoverflow.com/questions/740358
复制相似问题