Триггер при удалении (до / после) успешно создан, но при удалении данных выдает ошибку - PullRequest
0 голосов
/ 07 мая 2020

У меня здесь две таблицы, одна из сотрудников, а другая из отделов. Первичный ключ таблицы отдела действует как внешний ключ в таблице сотрудников.

Я пытаюсь сделать следующее: всякий раз, когда пользователь удаляет запись из таблицы отдела, он сначала удаляет всех сотрудников этого отдела из таблицы сотрудников, а затем удаляет строку из таблицы отделов. Поскольку он должен сначала удалить из таблицы сотрудников, я использую здесь триггер 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 , и тогда я столкнулся с такой же ошибкой.

Может ли кто-нибудь объяснить причину этой ошибки, а также как я могу ее решить? Заранее спасибо!

...