我实现了 ContentProviderbulkInsert()
方法以在事务内的表中插入大量行,但之后我需要在不同的表中进行更新,并且我只想在提交批量插入时这样做。这两个操作需要是原子的,要么做要么不做,我该怎么做?
这是 bulkInsert 方法:
@Override
public int bulkInsert(Uri uri, ContentValues[] values){
int nrInserted = 0;
String TABLE;
int uriType = mUriMatcher.match(uri);
switch (uriType){
case FEEDS:
TABLE = FeedsProviderContract.TABLE_NAME;
break;
default:
throw new IllegalArgumentException( "Unknown URI: " + uri );
}
SQLiteDatabase db = mDbHelper.getWritableDatabase();
//Begin inner transaction
db.beginTransaction();
try {
for (ContentValues cv : values){
db.insertOrThrow(TABLE, null, cv);
nrInserted++;
}
db.setTransactionSuccessful();
getContext().getContentResolver().notifyChange(uri,null);
} catch (SQLException ex){
ex.printStackTrace();
}
finally {
db.endTransaction();
}
return nrInserted;
}
现在当我打电话给它时,我可以进行这样的外部交易吗?我想这行不通。
...
//Begin outer transaction
getContentResolver().getContentProvider().bulkInsert(...);
//Update the other table
//End outer Transaction