批处理作业——暂时违反约束



让我们考虑一个具有唯一约束和以下值的列:

Col1
1
2
3

现在我想在批处理作业中将这些值更改为:

Col1
2
3
4

结果是,一旦我将1更改为2,这就违反了唯一约束,并且批处理作业停止了。但是,在完成批处理作业之后,约束将再次被满足。

我如何解决这个问题?

用例

我试图通过contentResolver.applyBatch(MediaStore.AUTHORITY, operations)重命名媒体商店中的文件列表,这会引发约束违反异常…

在这种情况下,重命名元素可能会导致对唯一列的冲突,您需要以安全的顺序应用转换。

基本上不要求内容提供者执行以下操作

rename 1 → 2
rename 2 → 3
rename 3 → 4

你应该问

rename 3 → 4
rename 2 → 3
rename 1 → 2

总是满足唯一约束。

同样,即使没有唯一约束,第一个方法也可能将所有内容重命名为4

最新更新