2

这是在 _id 列之外还有一个 UNIQUE 列的情况。

我可以看到三个选项:

  1. 将 insert 保留为 insert-if-no-conflict,将 update 保留为 update-if-present(这似乎是“标准”),并在客户端执行所有工作以决定如何解决此问题。

  2. 将 insert 更改为 insert-or-update-if-present 并将 update 保留为 update-if-present。这是否违反了标准的 ContentProvider 合同?

  3. 将 update 更改为 update-or-insert-if-not-present 并将 insert 保留为 insert-if-no-conflict。这对我来说比上面的第二个选项更没有意义,所以我可能不会这样做 - 但我怀疑它最终非常相似。

另外,如果我做第一个选项,这样做有什么好处吗

  1. 查询然后如果count=1,替换,否则插入
  2. 插入,如果失败则替换
  3. 替换,如果插入失败。

我预计更新比整体更新更多,但我主要关心的是使其可维护,因为我不认为这会成为性能瓶颈。

4

1 回答 1

0

我倾向于查询,然后根据是否存在现有记录进行更新或插入。您可以为此使用现有的 ContentProvider 方法 - 它对于后续开发人员来说非常易读。

缺点是有几个不必要的数据库命中。

本文讨论了如何修改 ContentProvider 以“实现” insertOrUpdate

于 2015-06-02T17:16:19.683 回答