私は次のテーブル構造を持っています:
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);
}
その問題の正しい解決策は何ですか