我想在添加新的表之前删除表中的所有表,并将PrimaryKey重置为1。
这是我的实体
@PrimaryKey(autoGenerate = true)
private int id;
private int weatherId;
private String highTemp;
private String lowTemp;
所以我用
if(weatherEntries != null && weatherEntries.size() != 0){
Log.d(TAG, "WeatherEntry List is not empty");
mDb.clearAllTables();
for(int i = 0; i < weatherEntries.size(); i++) {
mDb.weatherDao().insertWeather(weatherEntries.get(i));
Log.d(TAG, "Inserting Weather Data into the Database");
}
}
添加新条目时,其主键不是从1开始。 所以,我累了要查询
@Query("ALTER TABLE SequenceAction AUTO_INCREMENT = 0")
void clearPrimaryKey();
我得到了错误
“错误:输入'SequenceAction AUTO_INCREMENT'处没有其他变量”
我试图通过Google搜索如何解决此问题,甚至还查看了Room的Android文档,了解如何重置主键,但未找到任何内容。
任何帮助将不胜感激。
答案 0 :(得分:0)
尝试使用此查询:
@Query("UPDATE SQLITE_SEQUENCE SET seq = 1 WHERE name = <table>")
void clearPrimaryKey();
因为表将用作您的表名,例如:
@Query("UPDATE SQLITE_SEQUENCE SET seq = 1 WHERE name = 'WHEATHERS'")
void clearPrimaryKey();
答案 1 :(得分:0)
您可以通过两个查询来做到这一点:
delete from your_table;
和
UPDATE SQLITE_SEQUENCE SET seq = <n> WHERE name = 'your_table'
这可以解决问题。 n
在您的情况下为1。 ID将再次从1开始。