問題背景: 我有兩個表,其中主鍵是文本字段。Android上的SQLite:insertWithOnConflict()返回相同數據集的不斷增加的結果
當我使用相同的數據重複使用SQLiteDatabase.insertWithOnConflict(myTable, null, myValues, SQLiteDatabase.CONFLICT_REPLACE)
時,我看到不斷增加的值被返回。
因此,對於相同的數據集,INSERT正在執行(而不是REPLACE)。
問題: 然而,看着這些表與「SQLite數據庫瀏覽器」我看到的是進行時更換,我期望記錄正確的號碼。
根到我的混亂是描述Android文檔,指出: *返回 新插入的行或現有行的主鍵的行ID,如果輸入參數「conflictAlgorithm」 = CONFLICT_IGNORE OR -1,如果任何錯誤*
問題: 爲什麼REPLACE已完成,但現有數據的行ID未返回?
如果我有三行:A,B,C和我通過另一個AI期待它取代現有的A並返回1.但我想它是做的是刪除現有的A和新的行是數字4 – 2011-06-14 21:23:58
這正是基於文檔應該做的。它刪除行A(第1行),並將其重新插入行A(現在是第4行,因爲它是第3行之後的新插入)。我希望這是有道理的。 – mattdonders 2012-10-12 20:46:13
關於你的最後一句話......不,不應該使用CONFLICT_IGNORE。它沒有按預期工作。 https://code.google.com/p/android/issues/detail?id=13045 – Tom 2013-04-18 17:22:12