Столбец автоинкремента запоминает свое последнее значение в таблице SQLite - PullRequest
1 голос
/ 03 августа 2011

В одной таблице у меня есть столбец с автоинкрементным первичным ключом.

Проблема в следующем сценарии:

  • вставлено 4 строки
  • эти 4 затем удаляются
  • вставьте новую строку, и значение столбца с автоинкрементом будет 5

Как получить для этого столбца автоинкремента значение 1?

Ответы [ 3 ]

2 голосов
/ 03 августа 2011

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

1 голос
/ 28 ноября 2011

Вместо использования автоматического приращения вы можете просто использовать целочисленный первичный ключ, он будет работать нормально. Даже если ваша строка будет удалена одна за другой, следующий шаг будет выполнен правильно. Если вы оставите поле целочисленного первичного ключа пустым, будет взято максимальное значение строки и добавлено 1 (это похоже на max(value)+1). У меня отлично работает.

0 голосов
/ 03 августа 2011

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

В SQLite команда "усечь" недопустима.Вы можете использовать «Удалить из имя таблицы » и «Вакуум имя таблицы », чтобы сбросить счетчик первичного ключа, чтобы начать с 1. Пожалуйста, убедитесь, что в команде удаления нет предложения «где».

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