Сброс автоинкремента в библиотеке Android комнат - PullRequest
0 голосов
/ 16 декабря 2018

Я создал таблицу с помощью библиотеки комнат Android, в которой хранятся элементы типа User.Для столбца ID это значение автоматически генерируется путем добавления аннотации

@PrimaryKey(autoGenerate = true)

. При следующем запуске приложения я удаляю все записи в таблице.Однако автоматически сгенерированное значение не сбрасывается до 0, а продолжается там, где оно осталось от предыдущего запуска.

Как сбросить счетчик автоприращения при удалении всех записей в таблице?

1 Ответ

0 голосов
/ 16 декабря 2018

С чего бы это, пожалуй, более актуальный вопрос.Столбец с AUTOINCREMENT будет псевдонимом столбца rowid , который используется для уникальной идентификации строки.Не рекомендуется полагаться на это значение, кроме как для идентификации строки.

Использование AUTOINCREMENT (autogenerate = true) приводит к созданию внутренней таблицы sqlite_sequence , строки вэта таблица содержит значение самого высокого из когда-либо использовавшихся rowid Следующие rowid будут такими значениями + 1. Отсюда ваша проблема.

Таким образом, чтобы перезапустить с 1 выпотребуется либо обновить соответствующую строку в таблице sqlite_sequence до 0, либо удалить соответствующую строку в таблице sqlite_sequence .

Возможно, вы захотите взглянуть на Android Room - сбросить автоматически сгенерированный ключ при каждом запуске приложения . Отметив , что это может быть основой для сброса значения последовательности, , но , что оно всегда будет сбрасывать значение последовательности.

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