Теория для лабораторной работы №1 - "Изучение команд DDL", страница 15

      sal                        NUMBER(7,2),

      comm                    NUMBER(7,2),

      deptno                  NUMBER(2)

      CONSTRAINT fk_deptno         REFERENCES dept(deptno)   ON DELETE CASCADE )

Ограничение CHECK

Это ограничение определяет условие. Каждая строка в таблице должна удовлетворять этому условию, иначе она устанавливается в NULL. Условие в этом ограничении может ссылаться на любой столбец в таблице, но не может ссылаться на столбцы в другой таблице.

Условие не должно содержать следующие конструкции:

*  запросы к значениям других строк

*  вызов функций SYSDATE, UID, USER, USERENV

*  псевдостолбцы CURRVAL, NEXTVAL, LEVEL, ROWNUM

Пример.

Следующий пример создаёт таблицу DEPT и определяет ограничение CHECK в каждом столбце этой таблицы:

CREATE TABLE dept          (deptno NUMBER          CONSTRAINT check_deptno

                                            CHECK (deptno BETWEEN 10 AND 99)

                                            DISABLE,

dname VARCHAR2(9)         CONSTRAINT check_dname

                                            CHECK (dname = UPPER(dname))

                                            DISABLE,

loc VARCHAR2(10)   CONSTRAINT check_loc

                                            CHECK (loc IN ('DALLAS','BOSTON',

                                            'NEW YORK','CHICAGO'))

DISABLE)

Каждое ограничение возвращает значения столбца, в котором оно определено:

 

CHECK_DEPTNO

показывает, что значения номеров отделов лежат в промежутке от10 до 99.

CHECK_DNAME

показывает, что названия всех отделов должны быть набраны большими буквами.

CHECK_LOC

определяет местонахождение отделов в указанных городах.