CHECK CONSTRAINT EN SQL
Agregar CHECK CONSTRAINT a una tabla nueva en SQL
Agregar CHECK CONSTRAINT a una tabla ya existente en SQL
Eliminar CHECK CONSTRAINT en SQL
Deshabilitar CHECK CONSTRAINT EN SQL
Que es CHECK CONSTRAINT en SQL
[NOMBRE_COLUMNA][TIPODATO] CHECK(NOMBRE_COLUMNA EXPRESION )
La CHECK restricción como hemos visto debemos declararla luego del nombre de la columna y le tipo de datos:
[NOMBRE_COLUMNA][TIPODATO]: Representan el nombre y el tipo de dato declarado para la columna de una tabla.
CHECK: Instrucción que utilizaremos para limitar el campo de la tabla.
(NOMBRE_COLUMNA EXPRESION): Acá especificamos la columna que vamos limitar y determinamos la expresión, acá podemos hacer uso de operadores lógicos como por ejemplo si necesitamos que el campo solo acepte valores no mayores a 0.
Agregar CHECK CONSTRAINT a una tabla nueva en SQL
CREATE TABLE Articulos( ID INT IDENTITY NOT NULL, Nombre VARCHAR(100) NULL, Presentacion VARCHAR(80) NULL, Precio INT NOT NULL, Cantidad DECIMAL(18,2) CHECK(Cantidad >0), PRIMARY KEY(ID), ); GO
Ahora vamos a crear la siguiente tabla en Sql Server Management Studio.
Si observamos la tabla creada y los campos definidos la check restricción se la hemos definido al campo "Cantidad" y esto lo hemos hecho por dos puntos importantes. El primero al ser un campo de tipo de dato numérico se realizaran cálculos sobre dicho campo, y como segundo punto al almacenar cantidades de algún articulo debemos evitar que se registres datos numéricos negativos.
Ahora vamos a realizar dos ejemplos para ver el trabajo de la check restricción. Primero vamos realizar la inserción de los registros ala tabla y posterior vamos a proceder a realizar una actualización al campo "Cantidad".
En el ejemplo podemos observar que los registros han sido guardados de manera correcta. Si intentamos registrar un articulo pero con la cantidad negativa nos va generar un error ya que el campo no admite valores menores que cero.
DECLARE @CANTIDADVENTA DECIMAL(18,2) SET @CANTIDADVENTA = 4 UPDATE Articulos SET Cantidad = Cantidad-@CANTIDADVENTA WHERE Nombre = 'Switch Cisco'
Ahora ejecutemos el UPDATE en SQL Management Studio.
También podemos usar la CHECK restricción para múltiples columnas dentro de una tabla.
CREATE TABLE ArticulosB( ID INT IDENTITY NOT NULL, Nombre VARCHAR(100) NULL, Presentacion VARCHAR(80) NULL, Precio INT NOT NULL, Existencias DECIMAL(18,2) CHECK(Cantidad >0), Disponibles DECIMAL(18,2) CHECK (Disponibles >0), PRIMARY KEY(ID), ); GO
En la siguiente tabla hemos creado restricciones para los campos "Existencias" y "Disponible" de la tabla "ArticulosB" ambos campos no permiten valores menores a cero. Ahora también podemos crear restricciones a nivel de tabla. Para realizar esto debemos especificar las restricciones a los campos involucrados veamos como hacerlo con la tabla creada anteriormente.
CREATE TABLE ArticulosB( ID INT IDENTITY NOT NULL, Nombre VARCHAR(100) NULL, Presentacion VARCHAR(80) NULL, Precio INT NOT NULL, Cantidad DECIMAL(18,2) CHECK(Cantidad >0), Disponibles DECIMAL(18,2) CHECK (Disponibles >0), CHECK(Disponibles = cantidad),--RESTRICCION DE TABLA PRIMARY KEY(ID), ); GO
Al aplicar una restricción de tabla estamos diciendo que el campo "Disponible" debe ser igual alas "Existencias", esto con el fin de controlas las existencias en base alas cantidades disponibles.
Ahora bien también podemos nombrar una restricción, para eso debemos hacer uso de la palabra clave CONSTRAINT. Nombremos la restricción de la tabla creada anteriormente.
CREATE TABLE ArticulosB( ID INT IDENTITY NOT NULL, Nombre VARCHAR(100) NULL, Presentacion VARCHAR(80) NULL, Precio INT NOT NULL, Cantidad DECIMAL(18,2) CHECK(Cantidad >0), Disponibles DECIMAL(18,2) CHECK (Disponibles >0), --NOMBRE DE LA RESTRICCION CONSTRAINT VALIDAR_CATIDADES CHECK(Disponibles = cantidad),--RESTRICCION DE TABLA PRIMARY KEY(ID), ); GO
Agregar CHECK CONSTRAINT a una tabla ya existente en SQL
ALTER TABLE NOMBRE_TABLA ADD CHECK(NOMBRECOLUMNA-OPERADOR) ALTER TABLE NOMBRE_TABLA ADD CONSTRAINT NOMBRERESTRICCION CHECK(NOMBRECOLUMNA-OPERADOR)
Cualquiera de las dos opciones que utilicemos nos creara la restricción al campo de la tabla, con la diferencia que en una de las sintaxis especificamos el nombre de la restricción.
A continuación vamos a crear una tabla de ejemplo y posteriormente agregaremos las restricciones a los campos.
CREATE TABLE ArticulosC( ID INT IDENTITY NOT NULL, Nombre VARCHAR(100) NULL, Presentacion VARCHAR(80) NULL, Precio INT NOT NULL, Cantidad_Existencias DECIMAL(18,2) NUll, Cantidad_Disponibles DECIMAL(18,2) NULL, ); GO
De la siguiente tabla "ArticulosC" vamos a agregarles CHECK restricciones a los campos "Precio", "Cantidad_Existencias" y "Cantidad_Disponibles".
ALTER TABLE ArticulosC ADD CONSTRAINT ValidarPrecio CHECK(Precio >=0) ALTER TABLE ArticulosC ADD CONSTRAINT ValidarExistencias CHECK(Cantidad_Existencias >0) ALTER TABLE ArticulosC ADD CONSTRAINT ValidarDisponibilidad CHECK(Cantidad_Disponibles >0)
Ahora apliquemos los cambios en SQL Management Studio.
Eliminar CHECK CONSTRAINT en SQ
ALTER TABLE NOMBRE_TABLA DROP CONSTRAINT CONSTRAINT_NOMBRE
Supongamos que vamos a eliminar una de las check constraint creadas en la tabla "ArticulosC". Procedamos a eliminar la restricción "ValidarPrecio".
ALTER TABLE ArticulosC DROP CONSTRAINT ValidarPrecio
Ejecutemos la instruccion en Management Studio:
Verifiquemos si se elimino la restriccion de la tabla "ArticulosC".
Revisando la tabla podemos observar que se ha eliminado la CHECK restricción "validarPrecios".
En algunos caso suele pasar que no utilizamos la palabra clave CONSTRAINT para nombrar la restricción y se nos hace complicado saber el nombre de la check restricción, para eso podemos hacer uso de la siguiente declaración.
EXEC sp_help 'NOMBRE_TABLA'
Esta declaracion nos permite obtener la informacion de la tabla consultada. ejecutemos la declaracion para ver la informacion de la tabla "ArticulosC".
Al consultar la información de la tabla nos mostrara también los nombres de las check restricciones creadas para la tabla "ArticulosC".
Deshabilitar CHECK CONSTRAINT EN SQL
ALTER TABLE Nombre_tabla NOCHECK CONSTRAINT Nombre_constraint;
Podemos deshabilitar la check constraint si se produce alguna modificación en la columna donde tenemos activada la restricción o modificaciones a realizarse a nivel de tabla. Para desactivar una restricción de la tabla "ArticulosC", utilicemos la sintaxis antes vista.
ALTER TABLE ArticulosC NOCHECK CONSTRAINT ValidarExistencias
Si la ejecutamos en Sql Server Management Studio vamos a observar que sigue apareciendo la restricción a pesar de haberla deshabilitado, pero no esta en funcionamiento a menos que decidamos volverla a habilitar.
Esperando les haiga sido de mucha ayuda el articulo sobre CHECK CONSTRAINT. Las Restricciones son muy importante dada la necesidad de evitar la inserción o actualización de datos incorrectos que no pueden perjudicar al momento de desarrollo de un proyecto o aplicación.
0 Comentarios