43 - Indice único (unique)


Problema:

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

Eliminamos la tabla, si existe.

Crearemos dos índices únicos, uno por un solo campo y otro multicolumna:

 create table libros(
  codigo int unsigned auto_increment,
  titulo varchar(40) not null,
  autor varchar(30),
  editorial varchar(15),
  unique i_codigo (codigo),
  unique i_tituloeditorial (titulo,editorial)
 );

Veamos la información de los índices:

 show index from libros;

Analicemos esta información:

Table	Non_unique	Key_name	Seq_in_index	Column_name	Null
____________________________________________________________________________
libros		0	i_codigo		1	codigo
libros		0	i_tituloeditorial	1	titulo		
libros		0	i_tituloeditorial	2	editorial	YES

Aparecen 3 filas.

La tabla tiene 2 índices (2 filas corresponden al mismo índice).

Ambos índices son únicos, o sea, no permiten valores repetidos, esto se indica en la columna "Non_unique". La columna "Key_name" indica el nombre de los índices. La columna "Seq_in_index" y "Column_name" muestran la secuencia de la indexación para cada campo del índice "i_tituloeditorial". En el índice "i_tituloeditorial" y el campo "titulo" muestra 1 y para el campo "editorial" muestra 2, esto significa que está indexado en ese orden.

La columna "Null" indica si el campo permite valores nulos; el índice "i_codigo" no los permite; el campo "titulo" del índice "i_tituloeditorial" no los permite (recuerde que lo definimos "not null"), el campo "editorial" si los permite (YES).




Retornar