Ответ
В Oracle Database по умолчанию для внешнего ключа устанавливается ограничение NO ACTION (хотя в документации оно часто синонимично RESTRICT). Это означает, что операция DELETE в родительской таблице будет отклонена, если существуют зависимые записи в дочерней таблице.
Пример создания таблиц с поведением по умолчанию:
CREATE TABLE departments (
dept_id NUMBER PRIMARY KEY
);
CREATE TABLE employees (
emp_id NUMBER PRIMARY KEY,
dept_id NUMBER REFERENCES departments(dept_id) -- ON DELETE NO ACTION по умолчанию
);
-- Попытка удалить отдел с сотрудниками вызовет ошибку ORA-02292.
Альтернативные варианты, которые можно задать явно:
ON DELETE CASCADE: автоматическое каскадное удаление зависимых записей.ON DELETE SET NULL: установкаNULLв столбце внешнего ключа у зависимых записей.