12 - Campo entero con autoincremento.


Problema:

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');



Retornar