我正在编写一个 ContentProvider 来处理数据库。在这个数据库中,我有一个“trip”表和一个“day”表。行程表中的每条记录与天表中的多条记录相关联,即每次行程跨越多天,但任何一天记录只能属于一次行程。如果行程被删除,与之相关的所有日期也必须删除。
我的问题是,删除时从 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;
}
}
或仅删除确切要求的内容,应用程序中的多个呼叫以及旅行和所需的天数:
@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;
}
}