AUTO_INCREMENT у складовому індексі
У таблицях MyISAM та BDB можна визначити AUTO_INCREMENT для вторинного стовпця складового ключа. У цьому випадку значення, що генерується для автоінкрементного стовпця, обчислюється як MAX(auto_increment_column)+1) WHERE prefix=given-prefix. Стовпець з атрибутом AUTO_INCREMENT зручно використовувати, коли дані потрібно поміщати до впорядкованих груп.
CREATE TABLE animals (grp ENUM('fish','mammal','bird') NOT NULL,
id MEDIUMINT NOT NULL AUTO_INCREMENT
PRIMARY KEY (grp,id));
INSERT INTO animals (grp,name) VALUES("mammal","dog"),("mammal","cat"),
("bird","penguin"),("fish","lax"),("mammal","whale");
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 |
+--------+----+---------+Зверніть увагу, що в цьому випадку значення AUTO_INCREMENT буде використовуватися повторно, якщо в будь-якій групі видаляється рядок, який містить найбільше значення AUTO_INCREMENT.
Останнє значення поля AUTO_INCREMENT, яке було створено автоматично, можна отримати за допомогою функції SQL LAST_INSERT_ID() або API mysql_insert_id().
Поексперементуємо...
Див. також:
LAST_INSERT_ID()Last updated