1

我有以下表结构:

Table Days:          [_id,date,name]
                       ^
                       |
Table Events: [_id, day_id ,description]

外键 day_id 设置为 ON DELETE CASCADE

我想在第 2 天“插入或更新”。所以我做了:

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);
    }

什么是该问题的正确解决方案

4

1 回答 1

1

您应该如下添加您的引用,以允许 SQLite 自动删除或更新引用的列。

FOREIGN KEY [_id] REFERENCES [days] ON DELETE CASCADE ON UPDATE CASCADE

于 2012-04-16T12:35:47.633 回答