21 - Valores inválidos.


Problema:

Trabajamos con la tabla "libros" de una librería.

Eliminamos la tabla, si existe:

drop table if exists libros;

Creamos la tabla con la siguiente estructura:

 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(20) not null,
  autor varchar(30),
  editorial varchar(15),
  precio decimal(5,2) unsigned,
  cantidad mediumint unsigned not null,
  primary key(codigo)
 );

Ingresemos algunos registros con valores inválidos y veamos qué sucede:

 insert into libros (titulo,autor,editorial,precio)
  values ('Alicia en el pais de las maravillas',555,'Planeta',23.45);

En el campo "titulo" ingresamos una cadena de más de 20 caracteres (que es la longitud definida para el campo), como resultado, corta la cadena ingresada. En el campo "autor" ingresamos un valor numérico, lo convierte a cadena.

Ingresemos otro registro:

 insert into libros (titulo,autor,editorial,precio,cantidad)
  values ('Matematica estas ahi','Paenza','Planeta','abc',20000000);

En el campo "precio" ingresamos una cadena, la pasa por alto y coloca 0. En el campo "cantidad" ingresamos un valor fuera de rango, entonces guarda el valor límite más cercano del rango (16777215).

Ingresemos otro registro:

 insert into libros (titulo,editorial,precio)
  values ('Alegoria','Planeta',3333.50);

Como cargamos en el campo "precio" (decimal 5,2) un fuera de rango, almacenó el máximo valor permitido por el rango (999.99).

Ingresemos otro registro:

 insert into libros (titulo,editorial,precio)
  values ('Alegoria','Planeta',33.567);

Como cargamos en el campo "precio" (decimal 5,2) un valor con más decimales que los permitidos, el valor es redondeado al más cercano (33.57).

Ingresemos otro registro:

 insert into libros (codigo,titulo)
  values (2,'El gato con botas');

Aparece un mensaje de error indicando que la clave está duplicada.

Ingresemos otros registros:

 insert into libros (codigo,titulo)
  values (0,'El gato con botas');
 insert into libros (codigo,titulo)
  values (-5,'Robin Hood');

Intentamos ingresar el valor 0 para el código, lo pasa por alto y sigue la secuencia. Lo mismo sucede si ingresamos un valor negativo.

Veamos qué sucede con los valores "null":

 insert into libros (codigo,titulo)
  values (null,'Alicia a traves del espejo');

Si intentamos ingresar "null" para el código, lo pasa por alto y sigue la secuencia.

Otro ejemplo:

 insert into libros (titulo,autor)
  values (null,'Borges');

Aparece un mensaje de error indicando que el campo "titulo" no acepta valores nulos.

Otro ejemplo:

 insert into libros (titulo,autor,cantidad)
  values ('Antologia poetica','Borges',null);

Muestra un mensaje de error indicando que el campo "cantidad" no acepta valores nulos.




Retornar