English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MySQL последовательность - это набор целых чисел: 1, 2, 3, ..., так как в одной таблице может быть только один поле с автоматическим увеличением главного ключа, Если вы хотите реализовать автоматическое увеличение других полей, вы можете использовать последовательности MySQL.
В этой главе мы рассмотрим, как использовать последовательности в MySQL.
Самый простой способ использования последовательностей в MySQL - это использование MySQL AUTO_INCREMENT для определения последовательности.
В следующем примере создается таблица insect, В таблице insect поле id автоматически увеличивается без указания значения.
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, # type of insect -> date DATE NOT NULL, # date collected -> origin VARCHAR(30) NOT NULL # where collected ; Запрос ОК, изменено 0 строк (0.02 сек) mysql> INSERT INTO insect (id, name, date, origin) VALUES -> (NULL, 'housefly', '2001-09-10', 'kitchen'), -> (NULL, 'millipede', '2001-09-10', 'driveway'), -> (NULL, 'grasshopper', '2001-09-10', 'front yard'); Запрос ОК, изменено 3 строки (0.02 сек) Записи: 3 Дубликаты: 0 Предупреждения: 0 mysql> SELECT * FROM insect ORDER BY id; +----+-------------+------------+------------+ | id | name | date | origin | +----+-------------+------------+------------+ | 1 | housefly | 2001-09-10 | kitchen | | 2 | millipede | 2001-09-10 | driveway | | 3 | grasshopper | 2001-09-10 | front yard | +----+-------------+------------+------------+ 3 rows in set (0.00 sec)
В клиенте MySQL вы можете использовать Функция LAST_INSERT_ID() в SQL для получения значения AUTO_INCREMENT из последнего вставленного столбца.
В скриптах PHP и PERL также предоставлены соответствующие функции для получения значения AUTO_INCREMENT из последнего вставленного столбца.
Использование атрибута mysql_insertid для получения значения AUTO_INCREMENT. Пример:
$dbh->do("INSERT INTO insect (name,date,origin VALUES('moth','2001-09-14','windowsill')"); my $seq = $dbh->{mysql_insertid};
PHP использует функцию mysql_insert_id () для получения значения AUTO_INCREMENT столбца из выполняемого INSERT SQL запроса.
mysql_query("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id);
Если вы удалили多条 записей из таблицы данных и хотите переразместить AUTO_INCREMENT столбец оставшихся данных, вы можете это сделать, удалив столбец AUTO_INCREMENT и затем заново добавив его. Однако, этот процесс требует особой осторожности, так как если в процессе удаления добавляются новые записи, может возникнуть путаница в данных. Операция выполняется следующим образом:
mysql> ALTER TABLE insect DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
Обычно начальное значение последовательности равно 1, но если вам нужно указать начальное значение 100, вы можете реализовать это следующим образом:
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(30) NOT NULL, -> date DATE NOT NULL, -> origin VARCHAR(30) NOT NULL )engine=innodb auto_increment=100 charset=utf8;
Или вы также можете реализовать это после успешного создания таблицы следующим образом:
mysql> ALTER TABLE t AUTO_INCREMENT = 100;