如何更新主键?

时间:2014-05-25 11:58:51

标签: mysql duplicates primary-key

我有一个带有表格的MySQL数据库:

user
----
id (PRIMARY KEY)
name

让我们说它充满了:

id            name
--------------------
1             Monkey
2             Lion
3             Rabbit

现在我希望将所有ID增加一个,我会这样做:

UPDATE `user` SET `id` = `id` + 1;

理论上这应该可行,因为所有条目最终都会更新。 但是,DBMS通过按顺序更新它来处理它,从而导致错误:

Duplicate entry '2' for key 'PRIMARY'

有没有办法避免在更新密钥时获得重复的密钥条目?

2 个答案:

答案 0 :(得分:0)

您需要删除主键

   alter table xx drop primary key

然后更新你的表

然后添加主键

   ALTER TABLE xx ADD PRIMARY KEY (Id)

修改

或者您可以添加一些在您的表格中不存在的数字,假设您添加10

  UPDATE `user` SET `id` = `id` + 10

first

然后-9

  UPDATE `user` SET `id` = `id` -9

second

答案 1 :(得分:0)

您可以使用ORDER BY id DESC

UPDATE `user` SET `id` = `id` + 1
ORDER BY id DESC
;

Before update

After update