Искажение идентификатора mysql ID не начинается с 0

У меня есть таблица с идентификатором, этот идентификатор является автоматическим приращением и первичным ключом, первый раз, когда я вставил в эту таблицу, идентификатор начинается с 0, но после того, как я удалю все значения из этой таблицы и снова вставил в нее, идентификатор не начинается с 0, но начинается с последнего значения, которое было у ID, что происходит неправильно? может ли я reset значение 0?

Ответ 1

Вы можете либо обрезать таблицу, используя

TRUNCATE `table`

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

Или вы можете reset подсчитать, используя

ALTER TABLE `table` AUTO_INCREMENT = 1

Однако это ожидаемое поведение. Не делайте последнего, если таблица действительно пуста.

Ответ 2

Чтобы вставить первичный ключ со значением 0, выполните сначала следующий запрос:

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";

Ответ 3

Удаление всех элементов таблицы не влияет на первичный ключ. Первичный ключ будет по-прежнему автоинкрементным из своего последнего значения.

Если вы хотите reset первичный ключ, вы можете попытаться обрезать таблицу:

TRUNCATE TABLE yourtable;

Это очищает все элементы из вашей таблицы. Независимо от того, сбрасывает ли он первичный ключ, зависит от вашей базы данных. С Mysql он должен работать, поскольку Mysql удаляет и воссоздает таблицу в TRUNCATE.

Ответ 4

Вы должны использовать инструкцию TRUNCATE для перезапуска auto_increment из 1. Это нормальное поведение, чтобы избежать торможения.