触发器将更新其他表

时间:2017-05-30 20:14:20

标签: sql oracle triggers

我的目标是创建触发器,在Project更新的情况下,它会更新Task中的值。每个任务都有一个估计的时间,项目有列,其中存储了平均估计时间。我想要的是,如果更新一个任务的估计时间,触发器将改变项目的平均时间。

我无法弄清楚如何做到这一点,我已经在下面提出了代码,但它无效。

CREATE OR REPLACE TRIGGER trig_task_update
AFTER update
ON Task
FOR EACH ROW
BEGIN
  UPDATE Project p SET (avg_task_estimated_time) = (SELECT AVG(estimatedTime) FROM TASK t WHERE t.project_idProject= p.idProject) WHERE p.idProject = :NEW.project_idProject;
END;
/

在表TASK上更新后,我收到错误:

ORA-04091: table TASK is mutating, trigger/function may not see it

1 个答案:

答案 0 :(得分:0)

您无法查询触发代码的表(在行级触发器)。解决方法示例:https://stackoverflow.com/questions/5805986/oracle-after-delete-trigger-how-to-avoid-mutating-table-ora-04091

相关问题