【发布时间】:2020-01-12 15:05:04
【问题描述】:
我有这样的表格:
运费表:
ProducernName| ... |Amount
A |... |1
B |... |2
A |... |5
C |... |3
C |... |5
还有另一个生产者表:
Name|...| Shipped Amount
A |...| NULL
B |...| NULL
C |...| NULL
我们的想法是创建一个触发器,将 Shippings 表中每个生产者的发货量相加,并在任何更改(更新、删除、插入)后在 Producers 表上更新它 如果触发器有效,Producers 表将如下所示:
Name|...| Shipped Amount
A |...| 6
B |...| 2
C |...| 8
我尝试的是找到金额的总和并将其保存在我声明的变量中,但我不知道我的思维方向是否正确以及如何将总和插入到生产者表的正确行中..
CREATE TRIGGER SumShippedTrigger
AFTER INSERT OR DELETE OR UPDATE
OF amount
ON SHIPPINGS
FOR EACH ROW
DECLARE
producerShippedAmount NUMBER(10);
producer VARCHAR2(10);
BEGIN
SELECT SUM(amount) INTO producerShippedAmount
FROM Shippings
WHERE producer= :NEW.producer;
producer:= :NEW.procuder;
END;
/
如果有人可以帮助我,我将不胜感激! :)
【问题讨论】:
-
设计规则 #2749:不要存储汇总数据。你将在职业生涯的剩余时间里找出错误的原因。相反,在需要时汇总数据 - 至少暂时是正确的。
标签: sql oracle plsql database-trigger