В MySQL 5.7 имеется InnoDB-таблица с автоинкрементным суррогатным первичным ключом: id INT UNSIGNED NOT NULL AUTO_INCREMENT. В эту таблицу некоторое приложение пишет данные через хранимую функцию в однопоточном режиме, производя записи в таблицу одна за одной. Как сделать, чтобы не было пропусков в сгенерированных значениях id (за работу внешнего приложения я не отвечаю, а оно может попытаться записать в таблицу данные, не проходящие валидацию)?
Хранимая функция, через которую приложение пишет в таблицу БД выглядит следующим образом:
CREATE FUNCTION insert_material (n VARCHAR(255), d DATE) RETURNS INT UNSIGNED
BEGIN
INSERT INTO Material(name, date) VALUE(n, d);
RETURN LAST_INSERT_ID();
END
Как наиболее просто модифицировать эту функцию, чтобы гарантировать отсутствие пропусков в генерируемых значениях id?