Я пытаюсь обновить таблицу, которая содержит два столбца; 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
Не помещайте дополнительную информацию в комментарии - вместо этого отредактируйте свой вопрос и добавьте новую информацию в вопрос. На этот раз я сделал это для вас. Помните об этом в будущем. Благодарю. –