У меня здесь две таблицы, одна из сотрудников, а другая из отделов. Первичный ключ таблицы отдела действует как внешний ключ в таблице сотрудников.
Я пытаюсь сделать следующее: всякий раз, когда пользователь удаляет запись из таблицы отдела, он сначала удаляет всех сотрудников этого отдела из таблицы сотрудников, а затем удаляет строку из таблицы отделов. Поскольку он должен сначала удалить из таблицы сотрудников, я использую здесь триггер Before
.
Это триггер, который я создал (и он успешно скомпилирован)
create or replace trigger delete_department_employees
before delete
on dept
for each row
begin
delete from emp
where deptno = :old.deptno;
end;
/
Теперь я написал эту команду чтобы удалить запись из таблицы отделов,
delete from dept
where deptno = 10
Но я получил эту ошибку:
ORA-02292: integrity constraint (HASSANASHAS.SYS_C007000) violated - child record found
ORA-06512: at "HASSANASHAS.DELETE_DEPARTMENT_EMPLOYEES", line 2
ORA-04088: error during execution of trigger 'HASSANASHAS.DELETE_DEPARTMENT_EMPLOYEES'
Для ясности, я также пробовал использовать after delete
вместо before delete
, и тогда я столкнулся с такой же ошибкой.
Может ли кто-нибудь объяснить причину этой ошибки, а также как я могу ее решить? Заранее спасибо!