在MySQL中的列上增加主键/唯一值

在MySQL中的列上增加主键/唯一值,mysql,sql,sql-update,primary-key,unique,Mysql,Sql,Sql Update,Primary Key,Unique,我的目标是在MySQL数据库中的表中增加+7个主键值 Tablename=table,主键=id 例如: id name surname 1 John Doe 2 Mary McCain 3 Sam Smith 4 Roy Jenson 我需要把它变成 id name surname 8 John Doe 9 Mary McCain 10 Sam Smith 11 Roy Jenson 这样我

我的目标是在MySQL数据库中的表中增加+7个主键值

Tablename=table,主键=id

例如:

id   name   surname
1    John   Doe
2    Mary   McCain
3    Sam    Smith
4    Roy    Jenson
我需要把它变成

id   name   surname
8    John   Doe
9    Mary   McCain
10   Sam    Smith
11   Roy    Jenson
这样我可以在现有行之前再插入7行

我试过:

 UPDATE table SET id = id + 7
但我得到了一个错误:

 Failed to execute SQL : SQL UPDATE table SET id = id + 7 failed : Duplicate entry '2' for key 1

老实说,我真的不知道如何解决这个问题,还因为我在该表中有122000多个条目,如果不是几周的话,也需要几天的时间手动逐个更新它们。

只需在更新查询的末尾添加
ORDER by ID DESC

UPDATE table SET id = id + 7 ORDER BY ID DESC;
看见 在给定的SQLFiddle中尝试删除
orderby
,您将得到相同的错误

在进行此操作之前,请先进行备份。
如果试图进行减法,则需要在
ORDER BY
子句中使用
ASC
而不是
DESC

UPDATE table SET id = id - 7 ORDER BY ID ASC;

查看更改对象的
Id
的原因是什么?是的,这很有意义。。。如果您从最低id开始并增加它,那么可能已经有一个元素具有这样的id,这与您的方法不同。@Cthulhu-是的。和
ASC
for。当你在座位上移动时,你不能坐在别人的膝盖上!让最后一个人先做。