3.5.9 Использование атрибута AUTO_INCREMENT
Атрибут AUTO_INCREMENT
может использоваться для генерации уникального
идентификатора для новых строк:
CREATE TABLE animals (id MEDIUMINT NOT NULL AUTO_INCREMENT,
name CHAR(30) NOT NULL, PRIMARY KEY (id));
INSERT INTO animals (name) VALUES ("dog"),("cat"),("penguin"),
("lax"),("whale");
SELECT * FROM animals;
Что вернет:
+----+---------+
| id | name |
+----+---------+
| 1 | dog |
| 2 | cat |
| 3 | penguin |
| 4 | lax |
| 5 | whale |
+----+---------+
В таблицах 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()
.