Intereting Posts
Android – как я могу узнать, когда gridview достиг дна? Android: как периодически отправлять местоположение на сервер Как программно удалить приложение из пускового устройства (на корневом устройстве) Как сделать linearLayout частично прозрачным в Android? Несколько файлов dex определяют Lcom / google / ads / AdRequest $ Файлы ErrorCode и Multix dex определяют Lcom / google / ads / AdRequest $ ErrorCode Предложение SearchView – Ширина макета: match_parent Максимальная длина имени файла в Android Активность не отображается в реестрах, когда приложение находится в фоновом режиме Разделить панель действий только в режиме действия (CAB) Android: дублирование фрагментов при использовании поддержки Fragment Manager Использовать список массивов объектов в качестве адаптера счетчика Есть ли способ освободить камеру от различной активности после ее приобретения из другого вида деятельности? Как сделать снимок экрана программно? Xamarin «пытается вызвать виртуальный метод» void android.view.View.unFocus (android.view.View) »на ссылке с нулевым объектом» Использование памяти Android AdMob

Внешний ключ 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