3

事情是这样的:

我有一个用 jQuery/php/mysql 构建的 webapp。这是一个任务管理器。我有属于类别的类别和任务。任务有一个代理主键(自动增量 id),为了数据库一致性,我有一个自然键(唯一),如下所示:(id_category,位置)

当用户移动任务时,我必须更新该任务在 DB 中的位置(ajax 请求),以及与更改相关的所有其他任务的位置。例如,如果您将位置为 5 的给定任务上移至位置 2,则位置从 4 到 2 的任务的位置必须增加 1。(这是我的方法;我知道有些人将给定类别的整个任务集与新职位一起发送,但我试图只更新需要更新的任务)

问题是我不知道如何在不避免自然键中出现重复错误的情况下更新任务的位置,因为我不能/不知道如何同时更新所有内容。

所以你能帮我解决这个问题吗,或者我应该改变我的方法。我可以删除唯一索引(自然键),但数据库一致性机制有一些东西......

感谢您的任何帮助。

4

1 回答 1

1
BEGIN TRANSACTION;
SET UNIQUE_CHECKS=0;
-- update 1
-- update 2
SET UNIQUE_CHECKS=1; 
COMMIT;

应该这样做。

于 2012-03-28T18:55:18.950 回答