Как добиться отношения «Наследование» в базе данных SQLite на Android

Рассмотрим эту простую модель:

Базовая таблица Location:

+-------------------------------+
|           Locations           |
+-------------------------------+
|(PK) _id Integer Autoincrement |
|     name Text(100) Not null   |
|     is_in_range Integer       |
+-------------------------------+

И более специализированная таблица с именем WifiLocation:

+-------------------------------+
|         wifi_location         |
+-------------------------------+
|     ssid Text(0) Not null     |
|     signal_threshold Real     |
|(PK) _id Integer               |
+-------------------------------+

Я хочу, чтобы эта модель представляла WifiLocation, наследующую от Базовое местоположение. Поэтому я добавил предложение REFERENCESв столбец _idтаблицы wifi_locationsследующим образом:

CREATE TABLE wifi_locations (_id Integer primary key references Locations(_id), ....)

Я пытаюсь добиться отношения 1:1 между эти таблицы.

Когда я хочу вставить строку в таблицу wifi_locations, я сначала вставляю соответствующие значения (Name, IsInRange) в таблицу Locationsи получаю обратно Идентификатор строки. Затем я вставляю остальные данные (ssid) в таблицу wifi_locationsвместе с rowId в качестве внешнего ключа.

Таким образом, вставка в таблицу Location работает, и я получаю обратно идентификатор, но когда я пытаюсь использовать этот идентификатор и вставлять его в таблицу wifi_locations, я получаю SQL Constraint нарушенияошибка. Подробностей о том, что именно пошло не так, нет.

Что-то не так с моей схемой? Есть ли лучший способ добиться такого моделирования?

РЕДАКТИРОВАТЬ:

Точная ошибка:

06-16 15:56:42.846: E/Database(2038):
android.database.sqlite.SQLiteConstraintException: 
error code 19: constraint failed
9
задан Toon Krijthe 30 September 2012 в 19:41
поделиться