MyISAM Примечание
Для таблиц MyISAM, можно указать AUTO_INCREMENT на вторичную колонке индекса в нескольких столбцов. В этом случае сгенерированное значение для столбца AUTO_INCREMENT вычисляется как MAX (auto_increment_column) + 1 WHERE prefix = заданный префикс. Это полезно, когда вы хотите поместить данные в упорядоченные группы.
CREATE TABLE animals (
grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL,
PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
INSERT INTO animals (grp,name) VALUES
('mammal','dog'),('mammal','cat'),
('bird','penguin'),('fish','lax'),('mammal','whale'),
('bird','ostrich');
SELECT * FROM animals ORDER BY grp,id;
Который возвращает:
+--------+----+---------+
| grp | id | name |
+--------+----+---------+
| fish | 1 | lax |
| mammal | 1 | dog |
| mammal | 2 | cat |
| mammal | 3 | whale |
| bird | 1 | penguin |
| bird | 2 | ostrich |
+--------+----+---------+
В этом случае (если столбец AUTO_INCREMENT является частью индекса в несколько столбцов), значения AUTO_INCREMENT повторно используются при удалении строки с наибольшим AUTO_INCREMENT значение в любой группе. Этот происходит даже для таблиц MyISAM, для которых значения AUTO_INCREMENT обычно не используются повторно.
акцент мой.
Итак, если вы используете другой механизм хранения, вам необходимо вручную создать идентификатор последовательности.
Интересный вопрос. Что вы пробовали до сих пор? Куда вы застряли? –