次の単純なモデルを検討してください。
ベース 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
このモデルがからの継承を表すことを望みBaseLocation
ます。だから私はそのようなテーブルの列にREFERENCES
節を追加しました:_id
wifi_locations
CREATE TABLE wifi_locations (_id Integer primary key references Locations(_id), ....)
これらのテーブル間で 1:1 の関係を実現しようとしています。
テーブルに行を挿入する場合wifi_locations
、まず適切な値 (Name、IsInRange) をLocations
テーブルに挿入し、rowId
. 次に、残りのデータ (ssid) をwifi_locations
、rowId を外部キーとしてテーブルに挿入します。
したがって、Location テーブルへの挿入は機能しており、ID を取得していますが、この ID を使用して wifi_locations テーブルに挿入しようとすると、SQLConstraint violation
エラーが発生します。正確に何がうまくいかなかったのかについての詳細はありません。
私のスキーマに何か問題がありますか? そのようなモデリングを達成するためのより良い方法はありますか?
編集:
正確なエラー:
06-16 15:56:42.846: E/Database(2038):
android.database.sqlite.SQLiteConstraintException:
error code 19: constraint failed