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 filas afectadas (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, 'grasshopper', }}2001-09-10','front yard'); Query OK, 3 filas afectadas (0.02 sec) Registros: 3 Duplicados: 0 Advertencias: 0 mysql> SELECT * FROM insect ORDER BY id; +----+-------------+------------+------------+ | id | name | date | origin | +----+-------------+------------+------------+ | 1 | mosca de la fruta | 2001-09-10 | cocina | | 2 | cucaracha de muchos pies | 2001-09-10 | driveway | | 3 | grillo | 2001-09-10 | front yard | +----+-------------+------------+------------+ 3 rows en set (0.00 sec)
En el cliente de MySQL puedes usar La función LAST_INSERT_ID() en SQL se utiliza para obtener el valor de la columna autoincremental insertada por última vez.
También se proporcionan funciones correspondientes en los scripts PHP o PERL para obtener el valor de la columna autoincremental insertada por última vez.
Usar el atributo mysql_insertid para obtener el valor de AUTO_INCREMENT. Ejemplo a continuación:
$dbh->do("INSERT INTO insect (name,date,origin VALUES('moth','2001-09-14','windowsill')); my $seq = $dbh-{mysql_insertid};
PHP utiliza la función mysql_insert_id () para obtener el valor de la columna AUTO_INCREMENT en la sentencia de inserción ejecutada.
mysql_query("INSERT INTO insect (name,date,origin) VALUES('moth','2001-09-14','windowsill')", $conn_id); $seq = mysql_insert_id ($conn_id);
Si elimina múltiples registros de la tabla de datos y desea reordenar la columna AUTO_INCREMENT restante, puede hacerlo eliminando la columna autoincremental y luego volviendo a agregarla. Cuidado al realizar esta operación, ya que si se eliminan registros mientras se agregan nuevos, podría ocurrir un desorden en los datos. La operación se muestra a continuación:
mysql> ALTER TABLE insect DROP id; mysql> ALTER TABLE insect -> ADD id INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, -> ADD PRIMARY KEY (id);
El valor de inicio de la secuencia generalmente es1, pero si necesitas especificar un valor de inicio100, que podemos lograrlo con la siguiente sentencia:
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;
O también puedes lograrlo después de que la tabla se haya creado con la siguiente sentencia:
mysql> ALTER TABLE t AUTO_INCREMENT = 100;