Очистка значения автоинкремента после вызова clearAllTables () - PullRequest
0 голосов
/ 09 июня 2018

Android Room версии 1.1.0 теперь предоставляет метод clearAllTables().

Хотя этот метод очень удобен, он не очищает значение автоинкремента, сгенерированное функцией autoGenerate(), как указано в официальной документации.

Я также хотел бы очистить первичные ключи всех таблиц в моей базе данных без необходимости вызывать отдельные запросы для каждой таблицы.

1 Ответ

0 голосов
/ 09 июня 2018

Исходя из этого ответа , я бы предположил, что этот оператор SQL будет работать:

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

..., связывая столько предложений OR, сколько необходимо.

Однако sqlite_sequence не является таблицей с управлением комнатой, поэтому вам может потребоваться выполнить этот SQL, используя SupportSQLiteDatabase.Вы получите один из них, позвонив по номеру getOpenHelper().getWritableDatabase() на свой RoomDatabase.

Однако я бы не стал беспокоиться об этом.ИМХО, вам не следует полагаться на какое-либо конкретное поведение AUTOINCREMENT (например, всегда начиная с какого-то определенного значения).В этом случае неясно, какое значение имеет взлом SQLite для сброса этих значений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...