В моем приложении для Android я создаю FULLTEXT таблицу, подобную этой:
CREATE VIRTUAL TABLE products USING fts3 (
_id integer PRIMARY KEY,
product_name text NOT NULL,
...
)
И я добавляю этот индекс:
CREATE INDEX product_name_index ON products (product_name)
Приложение заполняеттаблица с различными продуктами, каждый из которых имеет уникальное значение _id
.
Однако, когда я затем пытаюсь вставить уже существующий идентификатор продукта (используя значение _id
, которое уже есть в таблице, но сдругое значение product_name
) вот так:
long rowId = db.insertOrThrow("products", null, contentValues);
a new строка добавлена в таблицу (с совершенно новымrowId
возвращаемое значение)!
Я ожидал, что команда insertOrThrow
не удастся, так в чем же проблема?Это как-то связано с тем, что это таблица FULLTEXT, или индекс, указанный в столбце product_name
, может как-то испортить ситуацию?
Я читал этот раздел о INTEGER PRIMARY KEY , но, к сожалению, я не мудрее.
Обновление
Когда я пытаюсь выполнить ту же операцию со стандартной (не FULLTEXT) таблицей, тоКоманда insertOrThrow
приводит к ожидаемому SQLiteConstraintException
.