Внешний ключ При КАСКАДНОМ удалении не работает в Android 2.2

#android #sqlite

#Android #sqlite

Вопрос:

У меня есть 2 таблицы:

 db.execSQL("Create Table Location(LocationID INTEGER PRIMARY KEY AUTOINCREMENT, 
Latitude TEXT, Longitude TEXT,"  
" CellID TEXT, MCC TEXT, MNC TEXT, LAC TEXT, SendTime TEXT DEFAULT
(datetime('now','localtime')), SignalStrength INTEGER, LocationType TEXT)");

db.execSQL("Create Table Error_Exception(LocationID INTEGER, ExceptionID INTEGER
PRIMARY KEY AUTOINCREMENT, ModuleID TEXT, ClassName TEXT, ControlName TEXT, "  
"MethodName TEXT, ErrorDescription TEXT, ErrorDate TEXT DEFAULT
(datetime('now','localtime')),
FOREIGN KEY(LocationID) REFERENCES Location(LocationID)
ON DELETE CASCADE);");
  

Когда я попытался удалить строки в Error_Exception , это не привело к удалению строк в Location таблице.

Я также пробовал с db.execSQL("PRAGMA foreign_keys=ON;"); , но все еще не работает.

Пожалуйста, помогите

Ответ №1:

Вы указали своей базе данных удалять строки в Error_Exception при удалении строк, на которые ссылаются в Location. Кажется, у вас все в обратном порядке.

Если вы хотите удалить строки в Location при удалении строк в Error_Exception, вам нужно удалить ограничение внешнего ключа в Error_Exception и добавить ограничение внешнего ключа в Location.