Android SQLite データベース内で外部キーを機能させようとしています。次の構文を試しましたが、強制的に閉じられてしまいます。
private static final String TASK_TABLE_CREATE = "create table "
+ TASK_TABLE + " (" + TASK_ID
+ " integer primary key autoincrement, " + TASK_TITLE
+ " text not null, " + TASK_NOTES + " text not null, "
+ TASK_DATE_TIME + " text not null, FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+" ("+CAT_ID+"));";
何が間違っているのか、何かアイデアはありますか? 他のテーブル構造を確認する必要がある場合は、ID と名前を持つ 2 番目の非常に単純な構造を確認できます。
編集:
エラーは次のとおりです:
03-13 13:42:35.389: ERROR/AndroidRuntime(312): 原因: android.database.sqlite.SQLiteException: 外部キー定義内の不明な列 "taskCat": テーブル reminders を作成します (_id 整数主キー自動増分、task_title テキスト null 以外、notes テキスト null 以外、reminder_date_time テキスト null 以外、FOREIGN KEY (taskCat) REFERENCES カテゴリ (_id));
ベストアンサー1
TASK_CAT
最初に列を定義し、次にその列に外部キーを設定する必要があります。
private static final String TASK_TABLE_CREATE = "create table "
+ TASK_TABLE + " ("
+ TASK_ID + " integer primary key autoincrement, "
+ TASK_TITLE + " text not null, "
+ TASK_NOTES + " text not null, "
+ TASK_DATE_TIME + " text not null,"
+ TASK_CAT + " integer,"
+ " FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+"("+CAT_ID+"));";
詳細はsqlite外部キーを参照してくださいドキュメント。