我创建了"天"表,如下所示
"create table days(" +
"day_id integer primary key autoincrement, " +
"conference_id integer , " +
"day_date text, " +
"day_start_time text, " +
"day_end_time text, " +
"day_summary text, " +
"day_description text)";
我创建了如下曲目表
CREATE_TABLE_TRACK = "create table track(" +
"track_id integer primary key autoincrement," +
"day_id integer,"+
"track_name text," +
"track_description text," +
" FOREIGN KEY(day_id) REFERENCES days(day_id) ON DELETE CASCADE )";
如上所示,我有外键day_id引用表日的day_id...
所以我想要的是,如果我删除了这一天,那么相应的曲目也应该被删除......但它在我的情况下不会发生..
我有 sqlite 版本 3.5.9
而且我还在我的助手类中添加了 1 行作为
> db.execSQL("PRAGMA foreign_keys=ON;");
但仍然行不通..请帮帮我..
联删除在 Sqlite 版本 3.6.19 之前不受支持,该版本首次包含在 Android 2.2 中。
幸运的是,还有另一种选择。
您可以在创建表查询下方执行另一个如下所示的查询:
db.execSQL("CREATE TRIGGER delete_days_with track BEFORE DELETE ON track "
+ "FOR EACH ROW BEGIN"
+ " DELETE FROM days WHERE track.day_id = days.day_id "
+ "END;");
请注意,delete_days_with_track
只是描述触发器功能的名称,这只是我使用的模式;我相信你可以随心所欲地命名它。
根据SQLite文档,直到3.6.19才添加对外键的支持。
使用 3.5.9,您必须以其他方式进行级联删除。