Резюме : в этой статье мы покажем вам различные способы сброса значений автоинкремента столбцов AUTO_INCREMENT в MySQL.
MySQL предоставляет вам полезную функцию под названием автоинкремент . Вы можете присвоить атрибут AUTO_INCREMENT столбцу таблицы, чтобы создать уникальный идентификатор для новой строки. Как правило, вы используете атрибут AUTO_INCREMENT для столбца первичного ключа таблицы.
Всякий раз, когда вы вставляете новую строку в таблицу, MySQL с помощью атрибута AUTO_INCREMENT автоматически присваивает порядковый номер столбцу.
Например, если в таблице восемь строк, и вы вставляете новую строку без указания значения для столбца автоинкремента, MySQL автоматически вставит новую строку id со значением 9.
Иногда вам может понадобиться сбросить значение столбца автоинкремента, чтобы идентификатор первой записи, который вы вставляете в таблицу, начинался с определенного числа, например, 1.
В MySQL вы можете сбросить значения автоинкремента различными способами.
Сначала создайте таблицу с именем tmp и присвойте атрибут AUTO_INCREMENT столбцу id первичного ключа.
CREATE TABLE tmp ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(45) DEFAULT NULL, PRIMARY KEY (id) );
Во-вторых, вставьте пример данных в таблицу tmp:
INSERT INTO tmp(name) VALUES('test 1'), ('test 2'), ('test 3');
В- третьих, запрос к таблице tmp для проверки операции вставки:
SELECT * FROM tmp;
У нас есть три строки со значениями столбца ID: 1, 2 и 3. Отлично! Пора попрактиковаться в сбросе значения автоинкремента столбца ID.
Вы можете сбросить значение автоинкремента с помощью оператора ALTER TABLE. Синтаксис оператора ALTER TABLE для сброса значения автоинкремента выглядит следующим образом:
ALTER TABLE table_name AUTO_INCREMENT = value;
Вы указываете имя таблицы после оператора ALTER TABLE и имя value, которое вы хотите сбросить в выражении AUTO_INCREMENT=value.
Обратите внимание, что значение value должно быть больше или равно текущему максимальному значению столбца автоинкремента.
Давайте удалим последнюю запись в таблице tmp с id значением 3:
DELETE FROM tmp WHERE ID = 3;
Если вы вставите новую строку, MySQL назначит 4 столбцу id новой строки. Однако вы можете сбросить число, сгенерированное MySQL, на 3, используя следующую инструкцию ALTER TABLE:
ALTER TABLE tmp AUTO_INCREMENT = 3;
Теперь давайте попробуем вставим новую строку в таблицу tmp и запросить данные из нее, чтобы увидеть эффект:
INSERT INTO tmp(name) VALUES ('MySQL example 3'); SELECT * FROM tmp;
У нас есть три строки с последним значением автоинкремента, равным 3 вместо 4, что мы и ожидали.
Оператор TRUNCATE TABLE удаляет все данные из таблицы и сбрасывает значение автоинкремента на ноль.
Следующее иллюстрирует синтаксис оператора TRUNCATE TABLE:
TRUNCATE TABLE table_name;
Используя оператор TRUNCATE TABLE, вы удаляете все данные из таблицы навсегда и сбрасываете значение автоинкремента на ноль.
Вы можете использовать пару операторов: DROP TABLE и CREATE TABLE, чтобы сбросить столбец автоинкремента. Обратите внимание, что этот метод удаляет все данные из таблицы навсегда.
Как и оператор TRUNCATE TABLE, эти операторы удаляют таблицу и воссоздают ее, поэтому значение автоинкремента сбрасывается на ноль.
DROP TABLE table_name; CREATE TABLE table_name(...);
В этой статье вы узнали, как различными способами сбросить значение автоинкремента в MySQL. Первый способ предпочтительнее, потому что он самый простой и не имеет побочных эффектов.