我有一个带有表格的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'
有没有办法避免在更新密钥时获得重复的密钥条目?
答案 0 :(得分:0)
您需要删除主键
alter table xx drop primary key
然后更新你的表
然后添加主键
ALTER TABLE xx ADD PRIMARY KEY (Id)
修改强>
或者您可以添加一些在您的表格中不存在的数字,假设您添加10
UPDATE `user` SET `id` = `id` + 10
然后-9
UPDATE `user` SET `id` = `id` -9
答案 1 :(得分:0)
您可以使用ORDER BY id DESC
UPDATE `user` SET `id` = `id` + 1
ORDER BY id DESC
;