出现问题是正确的,因为SQLite会在每次更新行之后而不是在语句末尾或事务结束时检查约束。
我看到此问题的解决方法(SQLite的实现不
UPDATE正确)。假设该
priority列没有任何负值,我们可以将它们(负值)用作临时值,以避免
UNIQUE约束错误:
UPDATE table1 SET priority = - (priority + 1) WHERe priority > 1 ;UPDATE table1 SET priority = - priority WHERe priority < 0 ;



