Integridad de datos usando Constraints DEFAULT, UNIQUE y CHECK en SQL

Cuando creamos una tabla en SQL podemos incluir reglas de negocio a través de constraints DEFAULT, UNIQUE y CHECK y de esta forma asegurar integridad en los datos que se almacenan

Constraint DEFAULT

El constraint DEFAULT provee de valores a las columnas cuando los usuarios no especifican uno. Sus usos más comunes son para establecer valores a columnas de metadata, cuando una fila ha sido creada, modificada, etc.

Al insertar valores pueden no incluir la columna en la sentencia INSERT o usar la palabra DEFAULT

constraint default create table insert alter

Una característica interesante es que permite saltarse la cláusula VALUES al realizar un INSERT si las columnas están definidas con un constraint DEFAULT o IDENTITY

Constraint default create table insert

Constraint UNIQUE

UNIQUE protege las columnas para que los valores que almacena sean únicos y solo esten presentes una única vez.

constraint unique create table insert null

Funciona muy parecido a un PRIMARY KEY  excepto por dos características

  1. El índice que se crea a partir de un constraint UNIQUE siempre es NonClustered
  2. Las columnas aceptan el valor NULL 

Al intentar insertar datos que ya se encuentran en la tabla marcará un error de violacion de constraint. 

constraint unique error insert

Constraint CHECK

El constraint CHECK aplica condiciones a los datos en las columnas cuando son insertados o modificados. Las condiciones generalmente son usadas para

  1. Marcar límite de datos basados en su tipo. El tipo de datos INT puede ir desde -2 millones hasta 2 millones, con un CHECK se puede delimitar el número mínimo y máximo aceptable
  2. Imponer un formato a una columna. Al almacenar ciertos datos de caracteres podemos especificar formatos en los datos para permitir ser insertados 
  3. Coordinar varios valores en conjunto. Existen escenarios donde distintas columnas deben hacer sentido en conjunto
constraint check insert create table

Cuando se intenta insertar un valor que no coincide con el constraint marca error y los datos no son almacenados

constraint check error insert

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *