Значение автоинкремента осталось позади / ниже фактических значений

Возможно ли, что в какой-то момент таблица имела идентификаторы выше, чем текущее значение AUTO_INCREMENT?

У меня есть таблица, которая действует как очередь. Я вставляю / удаляю 10-30 строк в секунду и мне нужно, чтобы столбец с автоинкрементом продолжал работать. Теперь, когда я вставляю строки, я получаю переработанное автоинкремент (id), например: 374097,

Вот таблица:

CREATE TABLE `test_table` (
    `id` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`)
COLLATE='utf8_bin'
ENGINE=InnoDB
AUTO_INCREMENT=374098;

Есть еще одна таблица, которая использует это id в качестве внешнего ключа.

SELECT max(batch_id) from secondary_table;

Возвращает: 397959, В какой-то момент test_table имел идентификаторы до 397959 в то время как AUTO_INCREMENT намного ниже!

Я читал об этом на https://dev.mysql.com/doc/refman/8.0/en/replication-features-auto-increment.html и я должен быть в безопасности - AUTO_INCREMENT установлен на простой первичный ключ.

Любая идея, если я могу продолжать использовать AUTO_INCREMENT, как это, или мне нужно использовать самостоятельно предоставленный идентификатор?

1 ответ

Вы можете сохранить автоинкремент: вам просто нужно обновить значение автоинкремента в первой таблице до максимального значения + 1

ALTER TABLE test_table AUTO_INCREMENT = 397959 + 1
Другие вопросы по тегам