我有一个带有优先级列的"任务"表,它有一个唯一的约束.
我试图交换两行的优先级值,但我一直违反约束.我在类似的情况下看到了这句话,但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中不使用假值和多个查询就可以实现这一点吗?
编辑:
以下是表格 struct :
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