Другая возможность включает создание пустой копии таблицы, установку AUTO_INCREMENT (с некоторой возможной задержкой для вставок во время неатомарной операции) и затем вращение обоих:
CREATE TABLE t2_new LIKE t2;
SELECT @newautoinc:=auto_increment /*+[leeway]*/
FROM information_schema.tables
WHERE table_name='t2';
SET @query = CONCAT("ALTER TABLE t2_new AUTO_INCREMENT = ", @newautoinc);
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
RENAME TABLE t2 TO t2_old, t2_new TO t2;
И тогда у вас есть дополнительное преимущество, поскольку вы все еще можете передумать перед удалением старой таблицы.
Если вы пересмотрите свое решение, вы все равно сможете вернуть старые записи из таблицы до операции:
INSERT /*IGNORE*/ INTO t2 SELECT * FROM t2_old /*WHERE [condition]*/;
Когда вы хорошо, вы можете оставить старый стол:
DROP TABLE t2_old;