Добрый день, коллеги.
Нигде в доках по mysql не нашел явного указания что в качестве параметра AUTO_INCREMENT принимает только явно заданное число.
Но на запрос типа
ALTER TABLE `archive` AUTO_INCREMENT = (@ai+1)
выдает ошибку синтаксиса.
Это действительно невозможно или у меня "кривые" руки?
Если это так, то возможно ли каким либо другим способом задать автоинкременту вычисляемое значение?
Зачем?
Одна из таблиц в проекте заполняется данными при выполнении расчёта в конце заданного периода.
Перед выполнением нового расчёта таблица очищается (так нужно).
Поэтому, перед очередным расчётом данные из этой таблицы сливаются в таблицы типа "архив_1", "архив_2" и т.д.
Хочу их сливать в общую архивную таблицу.
Но из-за установленного для базы значения блокировки, после каждого массового добавления записей в общий архив значение
автоинкремента в архиве увеличивается на большее значение, чем добавлено записей.
Само значение поля автоинкремента нигде не используется и, в принципе, не играет никакого значения.
Но заказчик, который с этими записями иногда работает из акцесса, хочет что бы значения этого поля в архиве шли последовательно, без дырок.
Как вариант, конечно, можно после добавления в архив новых записей просто перелить их во временную таблицу, сбросить автоинкремент в архиве
и залить обратно все записи. Но архив уже немаленький и пополняется активно - зачем лишняя и долговременная загрузка сервера?
Есть другое решение?
Спасибо!