как мы можем удалить внешний ключ в sqlite? - PullRequest
4 голосов
/ 29 августа 2011

Я работаю с базой данных SQLite.У меня есть таблица, которая содержит первичные ключи 2 других таблиц в качестве внешних ключей;Я хочу удалить один из них.Вот код для таблицы:

protected static final String Item_places=(" CREATE TABLE " 
    + Item_place + "(" 
    + place_id + " INTEGER ," 
    + Item_id + " INTEGER  ," 
    + "FOREIGN KEY("+place_id+ ") REFERENCES " + PlaceTable + "("+ PlaceID+ " ) ON DELETE CASCADE" 
    + "FOREIGN KEY("+Item_id+ ") REFERENCES "+ contentTable+ "("+contentID+"));"); 

Ответы [ 2 ]

5 голосов
/ 29 июля 2016

Это старый вопрос, но лучше предоставить обновленный ответ.

Начиная с API 16 (Aka Android 4.1), можно включить ограничения FK с помощью SQLiteDatabase#setForeignKeyConstraintsEnabled(boolean enabled).

Как для документов :

Устанавливает, включены ли ограничения внешнего ключа для базы данных.

По умолчанию внешнийКлючевые ограничения не применяются базой данных. Этот метод позволяет приложению разрешать ограничения внешнего ключа.Он должен вызываться каждый раз, когда база данных открывается, чтобы убедиться, что ограничения внешнего ключа включены для сеанса.

Чтобы это работало, внутри пользовательского SQLiteOpenHelper используйте следующий код:

@Override
public void onConfigure(SQLiteDatabase db) {
    // Enable FK constraints.
    db.setForeignKeyConstraintsEnabled(true);
    super.onConfigure(db);
}
5 голосов
/ 29 августа 2011

Вам может понадобиться команда ALTER TABLE DROP CONSTRAINT, но SQLite не поддерживает это , см. Как мне удалить ограничение из таблицы sqlite (3.6.21)? для обходной путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...