我在android中有一个应用程序,它使用sqlite来保存数据。
如果你调用一个方法从其他方法启动一个事务来启动另一个事务(如例子),它是否正确?这两笔交易发生了什么?
@Override
public void saveSurvApplied(MSurvey surv, MSApplied sa) {
try {
db.beginTransaction();
SurveyManager surveyManager = ManagerFactory.getSurveyManager(ctx);
surveyManager.saveSurveyState(surv); // it begins a transaction
saDao.save(sa);
db.setTransactionSuccessful();
} catch (SQLException ex) {
Log.e(tag, "Error insertando las encuestas aplicadas", ex);
} finally {
db.endTransaction();
}
}
...
SurveyManagerImpl.java
@Override
public void saveSurveyState(MSurvey survey) {
try {
db.beginTransaction();
for (MNode node : survey.getNodes()) {
nodeDao.update(node);
MItem[] items = node.getItems();
if (items != null) {
for (MItem item : items) {
itemDao.update(item);
}
}
}
surveyDao.update(survey);
db.setTransactionSuccessful();
} catch (SQLException ex) {
Log.e(tag, "Error actualizando la encuesta", ex);
} finally {
db.endTransaction();
}
}
我可以提供一些参考来了解在sqlite中调用嵌套事务时会发生什么吗? 谢谢。