我正在寫一個ContentProvider來處理數據庫。在這個數據庫中,我有一個「旅行」表和一個「日子」表。旅程表中的每個記錄都與日表中的多個記錄相關聯,即每個旅程跨越多個天,但是任何一天記錄可以僅屬於一個旅程。如果一次旅行被刪除,那麼所有與它相關的日子都必須被刪除。ContentProvider.delete與相關表格
我的問題是,刪除時,從ContentProvider處理此表關係的標準或普遍接受的方法是什麼?當我的delete方法得到一個URI來刪除一個特定的旅程時,它是否也應該刪除關聯的日子,或者它是否應該刪除旅程並要求使用ContentProvider的程序執行刪除這些日子的必要邏輯?
刪除全部一次,從與行程ID應用程序調用一次刪除:
@Override
public int delete(Uri uri, String selection, String[] selectionArgs)
{
SQLiteDatabase db;
int count;
db = _dbHelper.getWritableDatabase();
switch(uriMatcher.match(uri))
{
case TRIP_ID:
count = db.delete(TRIP_TABLE, KEY_TRIP_ID + "=?", new String[]{ uri.getLastPathSegment() });
count += db.delete(DAY_TABLE, KEY_TRIP_ID + "=?", new String[]{ uri.getLastPathSegment() });
return count;
}
}
Or的要求到底是什麼,因爲只需要從與旅行,儘可能多天應用中的多個電話刪除:
@Override
public int delete(Uri uri, String selection, String[] selectionArgs)
{
SQLiteDatabase db;
int count;
db = _dbHelper.getWritableDatabase();
switch(uriMatcher.match(uri))
{
case TRIP_ID:
count = db.delete(TRIP_TABLE, KEY_TRIP_ID + "=?", new String[]{ uri.getLastPathSegment() });
return count;
case Day_ID:
count = db.delete(DAY_TABLE, KEY_DAY_ID + "=?", new String[]{ uri.getLastPathSegment() });
return count;
}
}
太棒了!我不知道有外鍵這樣的事情,這只是一種嗜好,這種缺點。很好地解決了我的困境,謝謝。 – Ralgha