Разрешение конфликтов в Android-базе данных SQLite - PullRequest
15 голосов
/ 08 июля 2011

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

Ответы [ 3 ]

30 голосов
/ 08 июля 2011

В определении таблицы можно указать УНИКАЛЬНЫЙ индекс, который позволит строкам иметь значение ЗАМЕНА D:

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

Если в строке ВСТАВИТЬ или ОБНОВИТЬоператор пытается добавить строку с идентификатором, который уже существует, существующая строка заменяется новой.

6 голосов
/ 08 июля 2011

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

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

0 голосов
/ 08 июля 2011

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

select * from people where name = 'Smith';
//if resultset is empty then perform insert
insert into people values 'Smith'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...