簡體   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