Plazer-don.ru

Сварочное оборудование
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как сбросить AUTO_INCREMENT в MySQL/MariaDB

Как сбросить AUTO_INCREMENT в MySQL/MariaDB

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

Но у AUTO_INCREMENT есть одно интересное свойство — при удалении строк значение счётчика AUTO_INCREMENT не уменьшается. То есть, например, в таблицу было добавлено 10 записей, после этого все записи были удалены, а затем стали добавлять новые записи — в результате у первой новой записи значение столбца с AUTO_INCREMENT будет 11, у второй будет 12 и так далее.

Отсюда иногда возникает задача — сбросить значение AUTO_INCREMENT или установить AUTO_INCREMENT на единицу.

> Во-первых : отбросьте столбец

Это хорошо работает!

По состоянию на MySQL 5.6 приведенный ниже подход работает быстрее из-за онлайн DDL (примечание algorithm=inplace ):

alter table tablename auto_increment=1, algorithm=inplace;

Счетчик автоматического приращения для таблицы может быть (повторно)установлен двумя способами:

Путем выполнения запроса, как уже объяснялось ранее:

ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

С помощью Workbench или другого визуального инструмента проектирования баз данных. Я собираюсь показать в Workbench, как это делается, но это не должно сильно отличаться и в других инструментах. Щелкните правой кнопкой мыши по нужной таблице и выберите Alter table в контекстном меню. В нижней части вы можете увидеть все доступные варианты изменения таблицы. Выберите Options , и вы получите эту форму: enter image description here

Затем просто установите нужное значение в поле Auto increment , как показано на рисунке. Это в основном приведет к выполнению запроса, показанного в первом варианте.

Читайте так же:
Счетчик литров топлива своими руками

Я попытался изменить таблицу и установить значение auto_increment равным 1, но это не сработало. Я решил удалить имя столбца, которое я увеличивал, затем создать новый столбец с вашим предпочтительным именем и установить, чтобы этот новый столбец увеличивался с самого начала.

Вы можете просто усечь таблицу, чтобы сбросить последовательность

Чтобы обновить последний плюс один идентификатор

Я погуглил и нашел этот вопрос, но ответ, который я действительно ищу, соответствует двум критериям:

  1. использование чисто MySQL запросов
  2. сброс автоматического приращения существующей таблицы до max(id) + 1

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

Несколько вещей, которые следует отметить:

  1. таблица, о которой идет речь, InnoDB
  2. в таблице в качестве первичного ключа используется поле id с типом as int
  3. единственный способ сделать это чисто в MySQL-использовать хранимую процедуру
  4. мои изображения ниже используют SequelPro в качестве GUI. Вы должны быть в состоянии адаптировать его на основе вашего предпочтительного редактора MySQL
  5. Я проверил это на MySQL Ver 14.14 Distrib 5.5.61, для debian-linux-gnu

> во-первых: отбросьте столбец

это хорошо работает!

вы можете просто усечь таблицу, чтобы сбросить последовательность

  1. выполнив запрос, как и другие уже объяснил:

    ALTER TABLE <table_name> AUTO_INCREMENT=<table_id>;

  2. С помощью верстака или другого визуального проектирования баз данных инструментов. Я собираюсь показать в Workbench, как это делается — но это не должно сильно отличаться и в другом инструменте. Щелкните правой кнопкой мыши по нужной таблице и выберите Alter table в контекстном меню. На дне вы можете увидеть все доступные варианты изменения таблицы. Выбирай Options и вы получите эту форму: enter image description here

    затем просто установите нужное значение в поле Auto increment как показано на рисунке. Это будет в основном выполнять запрос, показанный в первом варианте.

Я попытался изменить таблицу и установить auto_increment в 1, но это не сработало. Я решил удалить имя столбца, которое я увеличивал, а затем создать новый столбец с вашим предпочтительным именем и установить этот новый столбец для увеличения с самого начала.

Шаг 2: вызов хранимой процедуры

На этот раз вы можете просто использовать обычные запросы MySQL.

Читайте так же:
Счетчики с полупиковой зоной

Первоначально из моих собственных заметок SQL-запросов в https://simkimsia.com/library/sql-queries/#mysql-reset-autoinc и адаптирован для StackOverflow

Ответ 21

Попробуйте запустить этот запрос

Или попробуйте этот запрос для автоматического сброса

И установить автоинкремент, затем выполнить этот запрос

Ответ 22

Пожалуйста, используйте ниже код:

Ответ 23

Я предлагаю вам перейти в Query Browser и сделать следующее:

  • Перейдите к схемам и найдите таблицу, которую вы хотите изменить.
  • Щелкните правой кнопкой мыши и выберите команду создания копии.
  • Откройте вкладку результатов и вставьте оператор create.
  • Перейдите к последней строке инструкции create и найдите Auto_Increment = N, (Где N — текущее число для поля auto_increment.)
  • Замените N на 1.
  • Нажмите ctrl + enter .

Auto_increment должен reset к одному, как только вы введете новую строку в таблицу.

Я не знаю, что произойдет, если вы попытаетесь добавить строку, в которой значение поля auto_increment уже существует.

Надеюсь на эту помощь!

Ответ 24

Лучший способ — удалить поле с AI и добавить его снова с помощью AI, работает для всех таблиц

Примеры сбрасывания значения автоматического приращения в MySQL

Сначала создайте таблицу с именем tmp и присвойте атрибут AUTO_INCREMENT столбцу id первичного ключа.

Во-вторых, вставьте пример данных в таблицу tmp:

В- третьих, запрос к таблице tmp для проверки операции вставки:

Как сбрасывать значения автоинкремента в MySQL

У нас есть три строки со значениями столбца ID: 1, 2 и 3. Отлично! Пора попрактиковаться в сбросе значения автоинкремента столбца ID.

Использование инструкции ALTER TABLE

Вы можете сбросить значение автоинкремента с помощью оператора ALTER TABLE. Синтаксис оператора ALTER TABLE для сброса значения автоинкремента выглядит следующим образом:

Вы указываете имя таблицы после оператора ALTER TABLE и имя value, которое вы хотите сбросить в выражении AUTO_INCREMENT=value.

Читайте так же:
Счетчик энергия 9 ошибка

Обратите внимание, что значение value должно быть больше или равно текущему максимальному значению столбца автоинкремента.

Давайте удалим последнюю запись в таблице tmp с id значением 3:

Если вы вставите новую строку, MySQL назначит 4 столбцу id новой строки. Однако вы можете сбросить число, сгенерированное MySQL, на 3, используя следующую инструкцию ALTER TABLE:

ALTER TABLE tmp AUTO_INCREMENT = 3;

Теперь давайте попробуем вставим новую строку в таблицу tmp и запросить данные из нее, чтобы увидеть эффект:

Как сбрасывать значения автоинкремента в MySQL

У нас есть три строки с последним значением автоинкремента, равным 3 вместо 4, что мы и ожидали.

Использование оператора TRUNCATE TABLE

Оператор TRUNCATE TABLE удаляет все данные из таблицы и сбрасывает значение автоинкремента на ноль.

Следующее иллюстрирует синтаксис оператора TRUNCATE TABLE:

Используя оператор TRUNCATE TABLE, вы удаляете все данные из таблицы навсегда и сбрасываете значение автоинкремента на ноль.

Использование операторов DROP TABLE и CREATE TABLE

Вы можете использовать пару операторов: DROP TABLE и CREATE TABLE, чтобы сбросить столбец автоинкремента. Обратите внимание, что этот метод удаляет все данные из таблицы навсегда.

Как и оператор TRUNCATE TABLE, эти операторы удаляют таблицу и воссоздают ее, поэтому значение автоинкремента сбрасывается на ноль.

В этой статье вы узнали, как различными способами сбросить значение автоинкремента в MySQL. Первый способ предпочтительнее, потому что он самый простой и не имеет побочных эффектов.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector