Ir al contenido principal

Constraint UNIQUE

Un Constraint UNIQUE nomina una columna o un conjunto de columnas para el cual el valor debe ser diferente para cada fila en la tabla. Si se basa sobre solo una columna, esta columna es conocida como llave(Key). Si el Constraint está compuesto por más de una columna (Constraint UNIQUE – Llave Compuesta Composite Key). Las columnas no han de ser del mismo tipo o estar adyacentes en la estructura de la tabla.

Una rareza del Constraint UNIQUE es que es posible ingresar valores NULL en las columnas key. De hecho es posible tener cualquier número de filas con valores nulos en sus columnas key. Este constraint garantiza que solo una fila tendrá un valor único a menos que se refiere a valores NULL que pueden ser varias filas las que lo tengan.

El Constraint UNIQUE es realizado por un Indice. Cuando se define un Constraint UNIQUE, Oracle buscará un índice en la columna Key, y si ésta no existe, se creará. Entonces cada vez que se inserta una fila, Oracle buscará el índice para ver si los valores de las columnas key ya existen: si ya existen, el registro se rechazara. La estructura de estos índices (conocido como B * Tree Index) no incluye valores NULL, por lo que se permite muchas filas con NULL, simplemente estas no estan en el índice.Mientras que el primer objetivo del índice es hacer cumplir el Constraint, tiene un efecto secundario: mejorar el rendimiento si las columnas de clave se utilizan en las cláusulas WHERE de SQL. Sin embargo, la selección WHERE key_column is null no utiliza el índice, ya que no incluye los valores Null y por lo tanto siempre resultará en una exploración de toda la tabla.

Comentarios