调用clearAllTables()后清除自动增量值

时间:2018-06-09 17:52:28

标签: android android-room

Android Room 1.1.0现在提供方法clearAllTables()

Altough这个方法非常方便,它不会清除由autoGenerate()生成的自动增量值,如官方文档中所述。

我还想清除数据库中所有表的主键,而不必为每个表调用单独的查询。

1 个答案:

答案 0 :(得分:0)

基于this answer,我假设这个SQL语句可以工作:

DELETE FROM sqlite_sequence WHERE name='table1' OR name='table2';

......根据需要链接尽可能多的OR条款。

但是,sqlite_sequence不是会议室管理的表,因此您可能需要使用SupportSQLiteDatabase执行此SQL。您可以在getOpenHelper().getWritableDatabase()上致电RoomDatabase来获取其中一个。

但是,我不打扰这个。恕我直言,你不应该依赖AUTOINCREMENT的任何特定行为(例如,始终从某个特定值开始)。在这种情况下,不清楚黑客SQLite重置这些值有什么价值。