android - пользоваться - sqlite3 on update cascade




SQlite-Android-синтаксис внешнего ключа (2)

Я пытаюсь получить внешние ключи, работающие в моей базе данных 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+"));";

Любые идеи, что я могу делать неправильно? если вам нужно увидеть другую структуру таблицы, то я могу, это просто очень простая структура для второго с идентификатором и именем.

Редактировать:

Вот ошибка:

03-13 13: 42: 35.389: ERROR / AndroidRuntime (312): вызвано: android.database.sqlite.SQLiteException: неизвестный столбец «taskCat» в определении внешнего ключа: создать напоминания о таблицах (_int integer primary key autoincrement, object_title text not null, текст примечаний не равен null, текст напоминания reminder_date_time не равен null, FOREIGN KEY (taskCat). ССЫЛКИ категория (_id));


Как вы можете видеть в описании ошибки, ваша таблица содержит столбцы (_id, tast_title, notes, reminder_date_time), и вы пытаетесь добавить внешний ключ из столбца «taskCat», но он не существует в вашей таблице!


Поскольку я не могу прокомментировать, добавив эту заметку в дополнение к ответу @jethro.

Я выяснил, что вам также нужно сделать строку FOREIGN KEY как последнюю часть создания инструкции таблицы, иначе вы получите синтаксическую ошибку при установке приложения. Я имею в виду, что вы не можете сделать что-то вроде этого:

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_CAT + " integer,"
+ " FOREIGN KEY ("+TASK_CAT+") REFERENCES "+CAT_TABLE+" ("+CAT_ID+"), "
+ TASK_DATE_TIME + " text not null);";

Где я помещаю TASK_DATE_TIME после строки внешнего ключа.







foreign-keys