我有以下表结构:
Table Days: [_id,date,name]
^
|
Table Events: [_id, day_id ,description]
外键day_id设置为ON DELETE CASCADE
我想"插入或更新"第二天。所以我做了:
ContentValues values= new ContentValues();
values.put("_id",2);
values.put("date,"...");
values.put("name","welcome");
mDb.replace("days",null,values);
问题是如果day_id = 2已经存在(在我的情况下是最可能的选项),DBengine会删除该表并插入一个新行,以便删除与该日相关的所有事件。
这个解决方案有效,但它非常不理想吗?
try {
mDb.insertOrThrow("days", null, values);
} catch (Exception e) {
mDb.update("days", values, "_id=2", null);
}
该问题的正确解决方法
答案 0 :(得分:1)
您应该添加如下引用,以便SQLite自动删除或更新引用的列。
FOREIGN KEY [_id] REFERENCES [天] ON DELETE CASCADE ON UPDATE CASCADE 强>