Внешний ключ SQLite

Я следую инструкциям из документации SQLite по адресу http://www.sqlite.org/foreignkeys.html, однако моя попытка добавить внешний ключ не работает. Вот мои заявления о создании:

CREATE TABLE checklist ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_title TEXT, description TEXT, created_on INTEGER, modified_on INTEGER ); CREATE TABLE item ( _id INTEGER PRIMARY KEY AUTOINCREMENT, FOREIGN KEY(checklist_id) REFERENCES checklist(_id), item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER, modified_on INTEGER ); 

Первая таблица сделана отлично. Ошибка возникает во втором выражении. Я пробовал оба с упаковкой двух запросов в транзакции и без нее. Вот ошибка:

Неизвестный столбец «checklist_id» в определении внешнего ключа (код 1): при компиляции: CREATE TABLE item (_id INTEGER PRIMARY KEY AUTOINCREMENT, FOREIGN KEY (checklist_id) СПИСОК ЛИТЕРАТУРЫ (_id), item_text ТЕКСТ, item_hint ТЕКСТ, item_order INTEGER, created_on INTEGER , Modified_on INTEGER)

Solutions Collecting From Web of "Внешний ключ SQLite"

Вы все равно должны создать столбец, прежде чем добавлять его в качестве внешнего ключа.

Так было бы:

 CREATE TABLE checklist ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_title TEXT, description TEXT, created_on INTEGER, modified_on INTEGER ); CREATE TABLE item ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_id INTEGER, item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER, modified_on INTEGER, FOREIGN KEY(checklist_id) REFERENCES checklist(_id) ); 

Просто вы не видите столбец checklist_id в таблице товаров . Вам нужно объявить это, прежде чем вы хотите установить его как FOREIGN KEY . Вы пытались создать FK на несуществующий столбец, и это причина, почему он не работает.

Поэтому вам нужно добавить следующее:

 checklist_id INTEGER, FOREIGN KEY(checklist_id) REFERENCES checklist(_id) 

Теперь он должен работать.

Вы должны указать имя столбца, прежде чем обернуть его с помощью FOREIGN KEY ().

 CREATE TABLE item ( _id INTEGER PRIMARY KEY AUTOINCREMENT, checklist_id INTEGER, FOREIGN KEY(checklist_id) REFERENCES checklist(_id), item_text TEXT, item_hint TEXT, item_order INTEGER, created_on INTEGER, modified_on INTEGER ); 

Поместите определение FOREIGN KEY в конец инструкции SQL