У меня есть таблица "задач" с столбцом приоритета, который имеет уникальное ограничение.
Я пытаюсь поменять значение приоритета на две строки, но я продолжаю нарушать ограничение. Я видел это утверждение где-то в аналогичной ситуации, но не с MySQL.
UPDATE tasks
SET priority =
CASE
WHEN priority=2 THEN 3
WHEN priority=3 THEN 2
END
WHERE priority IN (2,3);
Это приведет к ошибке:
Error Code: 1062. Duplicate entry '3' for key 'priority_UNIQUE'
Можно ли выполнить это в MySQL без использования фиктивных значений и нескольких запросов?
EDIT:
Здесь структура таблицы:
CREATE TABLE `tasks` (
`id` int(11) NOT NULL,
`name` varchar(200) DEFAULT NULL,
`priority` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `priority_UNIQUE` (`priority`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8