【发布时间】:2011-07-29 14:42:03
【问题描述】:
我刚刚编写了一个存储过程和存储函数,用于在我的 Orders 表中插入一个新行。行更新插入:Ordernum、OrderDate、Customer、Rep、Manufacturer、Product、Qty 和 SaleAmount。
我现在必须编写一个触发器,通过添加刚刚添加的订单数量来更新我的 Salesreps 表。我不确定如何引用这些行。我试过这个:
CREATE OR REPLACE TRIGGER UpdateSalesrep
AFTER INSERT ON Orders
FOR EACH ROW
BEGIN
UPDATE Salesreps
SET Sales = Sales + :NEW.Amount
WHERE Rep = Salesrep;
End;
/
Sales 是 Salesrep 表中列的名称。金额,如果在存储过程中使用的名称。我在“Where Rep = Salesrep”上返回了一个错误。如果我不包含此行,则触发器不会返回任何错误。但是,我假设如果我无法弄清楚如何将销售额与进行销售的一个销售代表联系起来,我将更新每个销售代表(我相信他们会非常满意)。一如既往,我们将不胜感激任何帮助。
【问题讨论】:
-
WHERE Rep = Salesrep;子句中的Salesrep是什么? -
抱歉,我尽量简明扼要地解释一切,但遗漏了一些东西。 Salesrep 是 Salesreps 表中行的名称(由 Orders 表中的 Rep 列引用,存储过程将行插入到该列中)。
-
那你为什么不把
NEW:放在Rep前面呢? (见答案)