批处理作业 - 暂时违反约束
Batch job - violate constraint temporarily
让我们考虑一个具有唯一约束和以下值的列:
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
让我们考虑一个具有唯一约束和以下值的列:
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