如果不存在,则插入sqlite记录,并使用唯一约束

时间:2013-07-31 15:50:57

标签: android sqlite

我有一张这样的表:

CREATE TABLE students(
    firstname VARCHAR(64), 
    lastname VARCHAR(64), 
    essay LONGTEXT,
    UNIQUE(firstname, lastname) ON CONFLICT REPLACE);

我想插入一条记录 - 如果它已经存在,我只想更新它:

String firstname = "bob";
String lastname = "smith";
String essay = "foo";

ContentValues values = new ContentValues();
values.put("firstname", firstname);
values.put("lastname", lastname);
values.put("essay", essay);

SQLiteDatabase db = ...;
db.insert("students", null, values);

因为我正在使用“ON CONFLICT REPLACE”,我可以依靠insert()方法来处理我的两种情况:(1)学生条目不存在,所以插入(2)学生条目存在,所以覆盖它。

由于

1 个答案:

答案 0 :(得分:0)

您必须阅读文档:

  

INSERT或UPDATE的OR子句中指定的算法   覆盖CREATE TABLE中指定的任何算法。如果没有算法   在任何地方指定,使用ABORT算法。

来自SQL As Understood By SQLite: ON CONFLICT clause