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 ); Query OK, 0 rows affected (0.02 sec) mysql> INSERT INTO insect (id,name,date,origin) VALUES -> (NULL,'housefly','2001-09-10','kitchen'), -> (NULL,'millipede','2001-09-10','driveway'), -> (NULL, 'joaninha', '}}2001-09-10','front yard'); Query OK, 3 linhas afetadas (0.02 sec) Registros: 3 Duplicados: 0 Warnings: 0 mysql> SELECT * FROM insect ORDER BY id; +----+-------------+------------+------------+ | id | name | +----+-------------+------------+------------+ | 1 | mosca doméstica | 2001-09-10 | cozinha | | 2 | besouro | 2001-09-10 | garagem | | 3 | joaninha | 2001-09-10 | front yard | +----+-------------+------------+------------+ 3 linhas afetadas em conjunto (0.00 sec)
No cliente MySQL, você pode usar A função LAST_INSERT_ID() no SQL é usada para obter o valor da coluna de auto-incremento da última tabela inserida.
Também são fornecidas funções correspondentes em scripts PHP ou PERL para obter o valor da coluna de auto-incremento da última tabela inserida.
Usar o atributo mysql_insertid para obter o valor da coluna AUTO_INCREMENT. Exemplo a seguir:
$dbh->do ("INSERT INTO insect (name,date,origin VALUES('mariposa','2001-09-14','janela')"); my $seq = $dbh-{mysql_insertid};
O PHP usa a função mysql_insert_id() para obter o valor da coluna AUTO_INCREMENT da cláusula INSERT executada.
mysql_query("INSERT INTO insect (name,date,origin) VALUES('mariposa','2001-09-14','janela')", $conn_id); $seq = mysql_insert_id($conn_id);
Se você deletar várias linhas da tabela de dados e quiser rearranjar a coluna AUTO_INCREMENT dos dados restantes, você pode fazer isso removendo a coluna de auto-incremento e adicionando-a novamente. Mas, a operação deve ser feita com muito cuidado, pois, se enquanto estiver deletando também estiver adicionando novos registros, pode ocorrer confusão nos dados. A operação é como mostrado a seguir:
mysql> ALTER TABLE insect DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
Geralmente, o valor inicial da sequência é1, mas se você precisar especificar um valor inicial100, então podemos implementar isso com a seguinte declaração:
mysql> CREATE TABLE insect -> ( -> id INT UNSIGNED NOT NULL AUTO_INCREMENT, -> PRIMARY KEY (id), -> name VARCHAR(3) NOT NULL, -> date DATE NOT NULL, -> origin VARCHAR(3) NOT NULL )engine=innodb auto_increment=100 charset=utf8;
Ou você também pode implementar isso após a criação da tabela com a seguinte declaração:
mysql> ALTER TABLE t AUTO_INCREMENT = 100;