Databases

T05-002 Restricciones

Enunciado

Restricción VALIDACIÓN.

También vamos a necesitar que se compruebe que los valores que se introducen son adecuados para ese campo. Para ello utilizaremos CHECK.

Esta restricción comprueba que se cumpla una condición determinada al rellenar una columna. Dicha condición se puede construir con columnas de esa misma tabla.

Si en la tabla USUARIOS tenemos el campo Crédito y éste sólo puede estar entre 0 y 2000, lo especificaríamos así:

CREATE TABLE USUARIOS (
    Credito NUMBER(4) CHECK (Crédito BETWEEN 0 AND 2000));

Una misma columna puede tener varios CHECK asociados a ella, para ello ponemos varios CONSTRAINT seguidos y separados por comas.

Ejercicio:

Debemos asegurarnos de que el EMAIL de los ALUMNOS contenga, al menos, una @., para lo que necesitaremos añadir una restricción CHECK que utilice la función INSTR para encontrar una @ en el atributo EMAIL.

Tipo

DDL

Solución


												
CREATE TABLE ALUMNOS ( NRE NUMBER(8) PRIMARY KEY, NIF_NIE VARCHAR2(9), APELLIDOS VARCHAR2(50) NOT NULL, NOMBRE VARCHAR2(25) NOT NULL, FECHA_NAC DATE, NACIONALIDAD VARCHAR2(30) DEFAULT 'Española', EMAIL VARCHAR2(100) NOT NULL UNIQUE CHECK (INSTR(EMAIL, '@') > 0), TELEFONO NUMBER(9) );

Prueba


											
SELECT COLUMN_NAME, UPPER(SUBSTR(REPLACE(REPLACE(SEARCH_CONDITION_VC, ' ', ''), '>=', '>'), 0, LENGTH(REPLACE(REPLACE(SEARCH_CONDITION_VC, ' ', ''), '>=', '>')) -1)) FROM USER_CONSTRAINTS JOIN USER_cons_columns USING(CONSTRAINT_NAME) WHERE COLUMN_NAME = 'EMAIL' AND CONSTRAINT_TYPE = 'C' AND INSTR (SEARCH_CONDITION_VC, 'IS NOT NULL') = 0 ORDER BY COLUMN_NAME;

Librerías (Onfly databases)


											
--