我有一个“ Employee
”表,该表具有名为“ E#
”和“ TOTAL_BUDGET
”的列。
我有一个“ WorkOn
”表,显示员工正在处理的所有P#
。
我有一个“ Project
”表,该表具有名为“ Budget
”,'E#'
和“ P#
”的列。
我想做的是,每当一个新项目已分配给一个员工(例如,将新数据插入WorkOn)时,行触发器将更新 TOTAL_BUDGET列的预算为分配给员工的所有项目。
例如,如果<当前分配给预算10K,15K和5K]的项目1,2,3,在插入新项目4后,员工1的预算[<5K到WorkOn表中,行触发器将员工1的TOTAL_BUDGET更新为35K。但是,我的行触发器当前所做的是,在更新TOTAL_BUDGET列之前,它总是排除新分配的项目预算(在上面的示例中,TOTAL_BUDGET
仅为30K。]这是我到目前为止所做的:
CREATE OR REPLACE TRIGGER update_budget
BEFORE INSERT on WorkOn
FOR EACH ROW
DECLARE
budget number;
BEGIN
SELECT SUM(Project.Budget) INTO budget
FROM WorkOn
INNER JOIN Project
ON WorkOn.P# = Project.P#
WHERE E# = :NEW.E#;
UPDATE Employee
SET Total_Budget = budget WHERE E# = :NEW.E#;
END;
我尝试将BEFORE INSERT
更改为AFTER INSERT
,但意识到我在修改变异表时无法执行此操作。是否可以使用行触发器来完成此任务?
任何帮助将不胜感激。谢谢。我有一个“雇员”表,其中包含名为“ E#”和“ TOTAL_BUDGET”的列。我有一个“ WorkOn”表,该表显示员工正在处理的所有P#。我有一个具有列的“ Project”表...