我试图更新包含两列的表; id
和position
。 id
是唯一的,并自动递增。 position
是唯一的,但不会自动增加,实际上必须手动设置。在一个查询中增加每行中的唯一列
我需要更改所有行的位置大于或等于5
(或我提供的任何其他数字)以将它们全部递增。这是我的代码:
UPDATE slides
SET position = position + 1
WHERE position >= 5;
不幸的是,它返回以下错误:
Error : Duplicate entry '2' for key 'slides_position_unique'
如何更新所有这些独特的数量,而不会造成冲突,我这样做?我已经尝试了一个查询所有可更新行的子查询,并将其返回,但它无济于事。
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 table'slides'的输出是什么? – Asenar
不要将其他信息添加到评论中,而是编辑您的问题并将新信息添加到问题中。这次我为你做了。请记住这一点在未来。谢谢。 –