我正在尝试向 SQLite 数据库表中插入一条记录。该表在列“URL”和主键自动递增整数“_id”上具有唯一约束。
我使用插入或替换作为我的冲突解决方案,因为我需要保留新数据。然而,这种方法增加了主键并弄乱了其他表中的一些外键。
在不更新 _id 的情况下覆盖记录的最佳方法是什么?
最佳答案
简单的答案是停止使用 Replace 语法。这会导致删除旧记录,然后添加新记录……这会增加您的索引。
改为使用 UPDATE 语法来处理冲突
编辑:
如果您真的偏爱 Replace 语法,那么它是有代价的。您将需要编写额外的代码,将所有先前出现的旧索引更新为新索引。不太难,但这将纠正同步索引的问题
文档 [在页面下方的 REPLACE 部分下列出]:http://www.sqlite.org/lang_conflict.html
关于android - 如何在不更改主键的情况下执行 SQL Insert 或 Replace like operator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5223730/