2013-07-31 2 views
0

У меня есть таблица вроде этого:Вставить 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) ученика запись существует, поэтому перезапишите ее.

Благодаря

+0

вы пробовали 'replace' или' replaceOrThrow() 'методы? – yugidroid

+0

Да, вы можете. Если имя и фамилия уже существуют, запись будет заменена – ramaral

ответ

0

Вы должны прочитать документацию:

Алгоритм, указанный в или положение в INSERT или UPDATE переопределяет любой алгоритм, указанный в CREATE TABLE. Если нигде не задан алгоритм , используется алгоритм ABORT.

От SQL As Understood By SQLite: ON CONFLICT clause

Смежные вопросы