0

我有一张这样的桌子:

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)学生条目存在,所以覆盖它。

谢谢

4

1 回答 1

0

您必须阅读文档:

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

来自SQLite 所理解的 SQL:ON CONFLICT 子句

于 2013-07-31T15:57:05.733 回答