- Кодирование
WORKOUT_ID + "FOREIGN KEY"
не будет иметь желаемого (при условии, что это ограничение внешнего ключа) результата.
Теоретически (см. Позже) приведенное выше создаст столбец с именем _id с типом столбца FOREIGN KEY (который будет переведен / преобразован в тип столбца NUMERIC ) , Однако, поскольку FOREIGN
является ключевым словом, попытка установить тип столбца завершится неудачно с синтаксической ошибкой. Вам необходимо указать тип столбца, который, вероятно, будет INTEGER
. Таким образом, у вас будет WORKOUT_ID
+ "INTEGER ....".
Однако FOREIGN KEY
сам по себе недостаточен и тоже не в том месте.
Существует два способа определения FOREIGN KEY
, как часть определения столбца или как часть определения таблицы.
В первом (определение столбца) не используется ключевое слово FOREIGN KEY
, а пропущенная 2-я часть - REFERENCES
(т. Е. Говорится о том, что является первичной таблицей вместе со ссылочным столбцом) с использованием этого метода, который вы будете использовать: -
WORKOUT_ID + " INTEGER REFERENCES " + TABLE_WORKOUT +"(" + WORKOUT_ID +")"
В последнем (определение таблицы) используется ключевое слово FOREIGN KEY. Вы должны написать это следующим образом: -
WORKOUT_ID + " INTEGER, FOREIGN KEY (" + WORKOUT_ ID + ") REFERENCES " + TABLE_WORKOUT + "(" + WORKOUT_ID + ")"
- Следующая строка
"(;"
приведет к синтаксической ошибке: ");"
.
Я бы также предположил, что использование _id
в качестве имени столбца, который ссылается на столбец _id
, может привести к путанице и трудностям (например, когда вы выбираете с объединением у вас будет два столбца _id
в результирующем курсоре).
Я бы предложил использовать другое имя столбца, например, workout_id_reference .