在插入触发器后使用新插入的数据更新列

问题描述 投票:0回答:2

我有一个“ Employee”表,该表具有名为“ E#”和“ TOTAL_BUDGET”的列。

我有一个“ WorkOn”表,显示员工正在处理的所有P#

我有一个“ Project”表,该表具有名为“ Budget”,'E#'和“ P#”的列。

我想做的是,每当一个新项目已分配给一个员工(例如,将新数据插入WorkOn)时,行触发器将更新 TOTAL_BUDGET列的预算为分配给员工的所有项目

例如,如果<当前分配给预算10K,15K和5K]的项目1,2,3,在插入新项目4后,员工1的预算[<5KWorkOn表中,行触发器将员工1TOTAL_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”表...

sql oracle triggers database-trigger
2个回答
0
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.