在SQLite升級過程中,失敗事務後,drop table沒有做任何事情。刪除SQL不會引發異常。Android SQLite - 升級過程中失敗事務後丟失表
我可以讓這個工作的唯一方法是刪除與交易有關的所有事情,但我希望數據庫保持不變,以分析升級過程中出錯的原因。
private void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
try {
db.beginTransaction();
// Exception occurs here
db.setTransactionSuccessful();
db.endTransaction();
}catch(Exception e){
db.endTransaction(); // Transaction is unsuccessful and changes rolled back
// Save for analyses
db.execSQL("DROP TABLE ..."); // Drop table does nothing
}
}
我需要它在結束事務後執行,以便從事務的變化回滾。 – Ryan
endtransaction將履行回滾責任。對? –
爲什麼在最終放棄完整表時回滾更改 – Nitesh