Я использую SQLite3. Я загружаю таблицу, скажем, из 30 строк, используя целое число в качестве основного идентификатора, и оно автоматически увеличивается.
Теперь я удаляю все строки из таблицы, а затем перезагрузите некоторую новую информацию в таблицу.
Проблема в том, что количество строк (мой PrimaryID) теперь начинается с 31. Можно ли как-нибудь начать загрузку новых строк с номера 1 и далее?
Использование:
DELETE FROM your_table;
DELETE FROM sqlite_sequence WHERE name = 'your_table';
SQLite отслеживает наибольший ROWID, который когда-либо содержала таблица, используя специальную таблицу SQLITE_SEQUENCE. Таблица SQLITE_SEQUENCE создается и инициализируется автоматически при создании обычной таблицы, содержащей столбец AUTOINCREMENT. Содержимое таблицы SQLITE_SEQUENCE может быть изменено с помощью обычных операторов UPDATE, INSERT и DELETE. Однако внесение изменений в эту таблицу, скорее всего, нарушит алгоритм генерации ключей AUTOINCREMENT. Убедитесь, что вы знаете, что делаете, прежде чем приступать к таким изменениям.
Нашел ответ на SO: SQLite Сброс поля первичного ключа
Использование:
ALTER TABLE tbl AUTO_INCREMENT = 1;
В любом случае, базу данных не волнует, последовательны ли номера id - только то, что значения уникальны. Если пользователи никогда не видят значение первичного ключа (а они и не должны видеть, потому что данные могут меняться и не всегда будут соответствовать значению первичного ключа), я бы не стал заморачиваться с этими опциями.
Для MySQL:
Используйте TRUNCATE TABLE имя таблицы
, чтобы очистить таблицу (удалить все записи) и сбросить счетчик автоматического увеличения.
Вы также можете использовать ALTER TABLE tablename AUTO_INCREMENT = 0;
, если вы просто хотите сбросить счетчик.
Для SQLite:
DELETE FROM tablename;
DELETE FROM SQLITE_SEQUENCE WHERE name='tablename';