SQLITE:提交后检查约束的事务

SQLITE: Transaction to check constraints after commit

我目前正在开发一个 sqlite table,我必须在其中执行以下操作:

ID | Name  | SortHint
---|-------|---------
 0 |   A   |    1
 1 |   B   |    2
 2 |   C   |    3

ID 是主键,SortHint 是具有 UNIQUE-constaint 的列。我要做的就是修改table,例如:

ID | Name  | SortHint
---|-------|---------
 0 |   A   |    3
 1 |   B   |    1
 2 |   C   |    2

问题:由于 UNIQUE 我不能简单地一行一行地更新。我试过了:

BEGIN TRANSACTION;
UPDATE MyTable SET SortHint = 3 WHERE ID= 0;
...
COMMIT;

但是第一次更新查询立即失败:

UNIQUE constraint failed: MyTable.SortHint Unable to fetch row

那么,有没有办法 "disable" 事务的唯一约束,并且只在事务提交后才检查所有约束?

备注:

一种可能是删除唯一约束,然后重新添加。不过有点贵。

另一种方法是将值设置为负值:

UPDATE MyTable
    SET SortHInt = - SortHint;

UPDATE MyTable
    SET SortHint = 3
    WHERE ID = 0;

. . .

如果您无法修改 table,则无法删除约束。 解决方法是将 SortHint 更改为未使用的范围。 例如,您可以将 10,000 添加到所有这些。犯罪。 然后立即更改为现在免费的正确号码。 也许之后再测试 10,000 或更高的数字不再存在。