我正在写一个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