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

Это ограничение показывает, что в таблице SHIP_CONT не существует двух строк значения полей SHIP_NO и CONTAINER_NO которых совпадают.

Ссылочные ограничения

Ссылочные ограничения определяют столбец или группу столбцов как внешний ключ и обеспечивают связь между внешним ключом и первичным или уникальным ключом, называемым ссылочным. В этой связи таблица, содержащая внешний ключ вызывает дочернюю таблицу и таблица, содержащая ссылочный ключ вызывает родительскую таблицу.

Определение ссылочного ограничения должно содержать любое из следующих слов:

*  FOREIGN KEY определяет столбец или группу столбцов в дочерней таблице, которые являются внешним ключом. Используется только при определении внешнего ключа с использованием синтаксиса задания ограничения на всю таблицу.

*  REFERENCES определяет родительскую таблицу и столбец или группу столбцов, которые являются ссылочным ключом. Если указывается только имя таблицы без указания столбцов, то внешний ключ автоматически ссылается на первичный ключ родительской таблицы. Столбцы ссылочного и внешнего ключей должны совпадать в их количестве и по типам данных.

*  ON DELETE CASCADE позволяет удаление значений ссылочного ключа в родительской таблице, которая имеет зависимые строки в дочерней таблице. Если опустить эту опцию, Oracle не позволяет удалять значения ссылочного ключа в родительской таблице, которая имеет зависимые строки в дочерней.

Перед определением ссылочного ограничения в дочерней должна существовать родительская таблица со ссылочными ключами.

Нельзя создавать ссылочное ограничение в операторе CREATE TABLE, содержащим клаузу AS. Вместо этого, можно создать таблицу без этого ограничения, а затем его добавить, используя оператор ALTER TABLE.

Столбец внешнего ключа не может быть типа LONG или LONG RAW.

Пример.

Следующий оператор создаёт таблицу EMP и определяет и разрешает внешний ключ на столбец DEPTNO, который ссылается на первичный ключ столбца DEPTNO таблицы DEPT:

CREATE TABLE emp

      (empno                 NUMBER(4),

       ename                  VARCHAR2(10),

       job                       VARCHAR2(9),