SQlite - Android - 外部キー構文 質問する

SQlite - Android - 外部キー構文 質問する

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外部キーを参照してくださいドキュメント

おすすめ記事