繁体   English   中英

在由SQLite支持的Android ContentProvider中,应如何实现insertOrUpdate语义?

[英]In Android ContentProvider backed by SQLite, how should I implement insertOrUpdate semantics?

在_id列之外还有UNIQUE列的情况下。

我可以看到三个选项:

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

  2. 将insert更改为insert-or-update-if-present,将update保留为update-if-present。 这会违反标准的ContentProvider合同吗?

  3. 将update更改为update-or-insert-if-present,然后将insert保留为insert-if-no-conflict。 这对我来说比上面的第二个选项没有意义,因此我可能不会这样做-但我怀疑最后它还是很相似。

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

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

我预计将有更多更新而不是整体替换,但主要是要使它具有可维护性,因为我认为这不会成为性能瓶颈。

我的倾向是根据是否有现有记录来查询然后进行更新或插入。 您可以为此使用现有的ContentProvider方法-以后的开发人员将很容易理解。

缺点是有一些不必要的数据库命中。

本文讨论了如何将ContentProvider修改为“实现” insertOrUpdate。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM