如果我插入重复的行,Android的SQLite库如何解决冲突?我正在为API级别7构建我的应用程序,遗憾的是,该应用程序没有从API级别8开始包含的SQLiteDatabase.insertOnConflict()
方法。
答案 0 :(得分:30)
您可以在表定义中指定UNIQUE索引,该索引允许行为REPLACE D:
CREATE TABLE mytable (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
UNIQUE (id) ON CONFLICT REPLACE
)
如果INSERT或UPDATE语句的行尝试添加具有已存在的id的行,则现有行将替换为新行。
答案 1 :(得分:6)
SQLite中有一个ON CONFLICT
子句,您可以说INSERT INTO ... ON CONFLICT...
。
答案 2 :(得分:0)
默认情况下,我会在重复索引插入时抛出唯一索引异常。常见的解决方案是在执行insert之前检查记录存在 - 伪代码:
select * from people where name = 'Smith';
//if resultset is empty then perform insert
insert into people values 'Smith'