viernes, 17 de julio de 2015

Checks

Restricciones Check Las restricciones check nos permiten verificar los valores que ingresan a los campos de las tablas de la base de datos. Un check permite validar el rango de valores de un campo de tipo numérico, o comparar valores de tipo cadena. Veamos por ejemplo, la siguiente tabla: CREATE TABLE EMPLEADOS ( CVEEMPLEADO VARCHAR(5) NOT NULL, NOMBRE VARCHAR(50), APELLIDOS VARCHAR(50), SUELDO_DIARIO DOUBLE PRECISION, SUELDO_INTEGRADO DOUBLE PRECISION, FECHA_INGRESO DATE, ESTATUS VARCHAR(1), CVEDEPARTAMENTO VARCHAR(5), PRIMARY KEY (CVEEMPLEADO)); En esta tabla se aprecia que los campos SUELDO_DIARIO y SUELDO_INTEGRADO son de tipo DOUBLE PRECISION y guardarán los dos tipos de sueldo que tiene cada empleado. En el caso de que deseáramos verificar que los sueldos no sean negativos, podemos utilizar una restricción Check. La podemos crear mediante una instrucción ALTER TABLE: alter table EMPLEADOS add constraint CHK_SUELDOS check (((SUELDO_DIARIO>0) AND (SUELDO_INTEGRADO>0))) Ahora vamos a analizar una situación más compleja. Supongamos que cada departamento tiene un sueldo diario máximo por empleado. Por lo tanto, debemos verificar que el sueldo diario no supere el valor del campo SUELDO_DIARIO_MAXIMO de la tabla DEPARTAMENTOS, que se muestra a continuación: CREATE TABLE DEPARTAMENTOS ( CVEDEPARTAMENTO VARCHAR(5), NOMBREDEPARTAMENTO VARCHAR(100), SUELDO_DIARIO_MAXIMO DOUBLE PRECISION, PRIMARY KEY(CVEDEPARTAMENTO)); Por lo tanto, crearemos otra restricción Check que verifique que el valor del campo SUELDO_DIARIO de cada trabajador no supere el valor especificado en el campo SUELDO_DIARIO_MAXIMO de la tabla DEPARTAMENTOS. El check se crea así: alter table EMPLEADOS add constraint CHK_SDOMAXIMO check (((SUELDO_DIARIO<=(SELECT SUELDO_DIARIO_MAXIMO FROM DEPARTAMENTOS WHERE CVEDEPARTAMENTO=EMPLEADOS.CVEDEPARTAMENTO)))) Es interesante saber que se pueden incluir instrucciones SELECT dentro de las restricciones Check. Con esto es suficiente para que se cancele cualquier inserción o modificación a algún registro en caso de que no cumpla con la restricción. En la figura 1 se aprecia el mensaje de error que manda cuando se viola esta restricción. Como vimos, es muy sencillo crear validaciones para cada campo usando las restricciones Check. Ahora veamos cómo se puede hacer lo mismo con Excepciones y Triggers. Excepciones

No hay comentarios:

Publicar un comentario