12 - Campo entero con autoincremento. |
Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla, si existe:
drop table if exists libros;
Creamos la tabla estableciendo como clave primaria y "auto_increment" el campo "codigo":
create table libros( codigo integer auto_increment, titulo varchar(20), autor varchar(30), editorial varchar(15), primary key (codigo) );
Al visualizar la estructura de la tabla:
describe libros;
vemos que en la columna "EXTRA" del campo "codigo" aparece "auto_increment", esto significa que el campo es autoincrementable, en la columna "KEY" aparece "PRI", es clave primaria.
Ingresamos algunos registros:
insert into libros (titulo,autor,editorial) values('El aleph','Borges','Planeta');
Note que al detallar los campos para los cuales ingresaremos valores hemos omitido "codigo"; cuando un campo es "auto_increment" no es necesario ingresar valor para él, porque se genera automáticamente. Recuerde que si es obligatorio ingresar los datos de todos los campos que se detallan y en el mismo orden.
Si mostramos los registros:
select * from libros;
vemos que este primer registro ingresado guardó el valor 1 en el campo correspondiente al código, comenzó la secuencia en 1.
Ingresamos más registros:
insert into libros (titulo,autor,editorial) values('Martin Fierro','Jose Hernandez','Emece'); insert into libros (titulo,autor,editorial) values('Aprenda PHP','Mario Molina','Emece'); insert into libros (titulo,autor,editorial) values('Cervantes y el quijote','Borges','Paidos'); insert into libros (titulo,autor,editorial) values('Matematica estas ahi', 'Paenza', 'Paidos');
Seleccionamos todos los registros:
select codigo,titulo,autor,editorial from libros;
Vemos que el código, dato que no ingresamos, se cargó automáticamente siguiendo la secuencia de autoincremento.
Está permitido ingresar el valor correspondiente al campo "auto_increment", por ejemplo:
insert into libros (codigo,titulo,autor,editorial) values(6,'Martin Fierro','Jose Hernandez','Paidos');
Pero debemos tener cuidado con la inserción de un dato en campos "auto_increment".
Veamos los distintos casos.
Si ingresamos un valor repetido, aparecerá un mensaje de error y el registro no se ingresará:
insert into libros (codigo,titulo,autor,editorial) values(2,'Martin Fierro','Jose Hernandez','Planeta');
Si ingresamos un valor que no sigue la secuencia, el dato es válido, lo toma, por ejemplo:
insert into libros (codigo,titulo,autor,editorial) values(15,'Harry Potter y la piedra filosofal','J.K. Rowling','Emece');
El siguiente registro insertado tomará el valor más alto para seguir la secuencia (en este caso 16):
insert into libros (titulo,autor,editorial) values('Harry Potter y la camara secreta','J.K. Rowling','Emece');
Si ingresamos 0, no lo toma y guarda el registro continuando la secuencia (17 en este caso):
insert into libros (codigo,titulo,autor,editorial) values(0,'Alicia en el pais de las maravillas','Lewis Carroll','Planeta');
Si ingresamos un valor negativo (y el campo no está definido para aceptar sólo valores positivos), lo ingresa:
insert into libros (codigo,titulo,autor,editorial) values(-5,'Alicia a traves del espejo','Lewis Carroll','Planeta');