Nul*_*ion 13 sqlite android foreign-key-relationship
我有如下创建的"天"表
"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)";
Run Code Online (Sandbox Code Playgroud)
我有如下创建的轨道表
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 )";
Run Code Online (Sandbox Code Playgroud)
如上所示,我有外键day_id引用表天的day_id ...
所以我想要的是,如果我删除那一天,那么相应的轨道也应该被删除...但它不会发生在我的情况下..
我有版本3.5.9的 sqlite
而且我在我的帮助类中添加了一行作为
> db.execSQL("PRAGMA foreign_keys = ON;");
但仍然无法工作..请帮帮我..
直到Sqlite版本3.6.19(第一次包含在Android 2.2中)才支持级联删除.
幸运的是还有另一种选择.
您可以在create table query下面执行如下所示的另一个查询:
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;");
Run Code Online (Sandbox Code Playgroud)
请注意,这delete_days_with_track只是描述触发器操作的名称,这只是我使用的模式; 我相信你可以任意命名.
| 归档时间: |
|
| 查看次数: |
17222 次 |
| 最近记录: |