【发布时间】:2016-09-28 08:44:00
【问题描述】:
我正在尝试更新包含两列的表; id 和 position。 id 是唯一的并且会自动递增。 position 是唯一的但不会自动递增,实际上必须手动设置。
我需要更改位置大于或等于5(或我提供的任何其他数字)的所有行,以将它们全部加一。这是我的代码:
UPDATE slides
SET position = position + 1
WHERE position >= 5;
不幸的是,它返回以下错误:
错误:键“slides_position_unique”的重复条目“2”
如何更新所有这些唯一编号而不引起冲突?我尝试了一个子查询来查找所有可更新的行并反向返回它们,但它没有帮助。
CREATE TABLE slides
(id int(10) unsigned NOT NULL AUTO_INCREMENT,
user_id int(10) unsigned NOT NULL,
position int(10) unsigned NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY slides_position_unique (position),
KEY slides_user_id_foreign (user_id),
CONSTRAINT slides_user_id_foreign
FOREIGN KEY (user_id) REFERENCES users (id) )
【问题讨论】:
-
show create tableslides` 的输出是什么? -
不要将其他信息放入 cmets - 相反,编辑您的问题并将新信息添加到问题中。这次我已经为你做了。今后请牢记这一点。谢谢。
标签: mysql sql select sql-update auto-increment