外键ON DELETE CASCADE在Android 2.2中不起作用

时间:2011-04-26 07:37:35

标签: android sqlite

我有两张桌子:

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 个答案:

答案 0 :(得分:5)

当已删除位置中引用的行时,您已告知数据库删除Error_Exception中的行。你好像落后了。

如果要在删除Error_Exception中的行时删除Location中的行,则需要在Error_Exception中删除外键约束,并在Location中添加外键约束。