1

私は次のテーブル構造を持っています:

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

外部キーday_idはONDELETECASCADEに設定されています

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が参照される列を自動的に削除または更新できるようにするには、以下のように参照を追加する必要があります。

外部キー[_id]参照[日]カスケードの削除、カスケードの更新

于 2012-04-16T12:35:47.633 に答える