我正在尝试使用以下方法更改表格中每行的id
(主键,AUTO_INCREMENT):
UPDATE foo SET id = id + 4;
但它给了我:
Duplicate row for primary key value 5
或类似的东西。
我该如何解决这个问题?是否存在以向后顺序更新行的查询,因此不会发生这种情况?
感谢。
答案 0 :(得分:3)
这是在单个SQL语句中执行此操作的解决方案。
UPDATE foo F
INNER JOIN (SELECT id FROM foo ORDER BY id DESC) F2
ON F.id = F2.id
SET F.id = F.id + 4
答案 1 :(得分:0)
这可能不是最有效的方法。但你可以尝试制作一个选择,按ID从最大到最小排序,并逐个修改它。再一次,这是低效的,但它完成了工作。
答案 2 :(得分:0)
您可以添加其他column id2
,设置column id2
value=id+4
,然后设置id=id2
。
更新:或者您可以尝试切换检查约束OFF
,进行更新并切换ON
。