0
のがユニーク制約と、次の値を持つ列を考えよう制約に違反:バッチジョブ - 一時的
Col1
1
2
3
は今、私は次のようにバッチジョブでこれらの値を変更したい:
Col1
2
3
4
結果は、1から2に変更するとすぐに、これが一意の制約に違反し、バッチ・ジョブが停止されます。バッチジョブを終了した後、再び制約が満たされます。
どのように問題を解決できますか?
ユースケース
私はcontentResolver.applyBatch(MediaStore.AUTHORITY, operations)
を経由してメディアストア内のファイルのリストの名前を変更しようとしていると、これは制約違反の例外がスローされます...名前変更要素が発生する可能性がありますこのような場合には
にすべての名前を変更するのでしょうか?しかし、あなたが正しい、それは事前に操作を並べ替えることがより合理的です、それはすべての問題を解決する、それについて考えなかった。 – prom85
いいえ、トランザクションは変更を安全にするためのメカニズムに過ぎません。トランザクションは、すべての操作の最後に行くと列が正常になることを知ることは意味がありません。 – XGouchet
私は、トランザクションが古い値と新しい値との間にdistingiushする可能性があり、トランザクションがコミットされるまでのみ古い値をチェックできると考えました。助けてくれてありがと – prom85