У меня есть 2 таблицы:
Сотрудники (Employee_ID, First_name, Last_name, Email, Hire_date, Department_ID)
Отделы (Department_ID, Department_name, Total_employees).
I создали триггер, который срабатывает после вставки сотрудника в таблицу сотрудников. Он увеличивает столбец total_employees на 1 для: нового вставленного Department_ID.
Триггер:
create or replace TRIGGER emp_count_department
AFTER INSERT OR DELETE ON EMPLOYEES
for each row
DECLARE
counter NUMBER;
BEGIN
if inserting then
select total_employees into counter
from departments
where department_id = :new.department_id;
update departments
set total_employees = counter+1
where department_id = :new.department_id;
elsif deleting then
select total_employees into counter
from departments
where department_id = :old.department_id;
update departments
set total_employees = counter-1
where department_id = :old.department_id;
end if;
END;
Когда я пытаюсь вставить сотрудника, он вставляется, но не увеличивает total_employees на 1 в отделах стол. Когда я пытаюсь вставить сотрудника с идентификатором отдела_, которого нет в таблице отделов, возникает ошибка. Таким образом, триггер работает, но не увеличивает общее число на 1.