Разрешение конфликтов в Android SQLiteDatabase

Как библиотека Android SQLite разрешает конфликты, если я вставляю повторяющиеся строки? Я создаю свое приложение для уровня API 7, у которого, к сожалению, нет метода SQLiteDatabase.insertOnConflict(), который был включен, начиная с уровня API 8.

Ответ 1

В определении таблицы можно указать индекс UNIQUE, который позволит REPLACE: D:

CREATE TABLE mytable (
  id  INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  UNIQUE (id) ON CONFLICT REPLACE
)

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

Ответ 2

В SQLite есть предложение ON CONFLICT, которое вы можете сказать INSERT INTO ... ON CONFLICT....

Прочтите документацию, пожалуйста. http://www.sqlite.org/lang_conflict.html

Ответ 3

По умолчанию у вас есть уникальное исключение индекса, которое будет выбрано для дублированной вставки индекса. Общее решение - это наличие контрольной записи перед исполнением insert - псевдокод:

select * from people where name = 'Smith';
//if resultset is empty then perform insert
insert into people values 'Smith'