Room - 删除表并重置其主键

Ahm*_*hal 5 sqlite android android-room

我想在添加新表之前删除表中的所有整体并将 PrimaryKey 重置回 1。

这是我的实体

@PrimaryKey(autoGenerate = true)
private int id;
private int weatherId;
private String highTemp;
private String lowTemp;
Run Code Online (Sandbox Code Playgroud)

所以我用了

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");
            }
        }
Run Code Online (Sandbox Code Playgroud)

当添加新条目时,它们的主键不是从 1 开始。所以,我厌倦了查询

@Query("ALTER TABLE SequenceAction AUTO_INCREMENT = 0")
void clearPrimaryKey();
Run Code Online (Sandbox Code Playgroud)

我收到错误

“错误:输入‘SequenceAction AUTO_INCRMENT’处没有变量替代”

我试图在谷歌上查找如何解决这个问题,甚至查看了 Room 的 Android 文档以了解如何重置主键,但没有找到任何内容。

任何帮助将不胜感激。

小智 2

尝试使用此查询:

 @Query("UPDATE SQLITE_SEQUENCE SET seq = 1 WHERE name = <table>")
void clearPrimaryKey();
Run Code Online (Sandbox Code Playgroud)

as table 将作为您的表名称,例如:

 @Query("UPDATE SQLITE_SEQUENCE SET seq = 1 WHERE name = 'WHEATHERS'")
void clearPrimaryKey();
Run Code Online (Sandbox Code Playgroud)