创建 Oracle 更新触发器

Create Oracle Update Trigger

大家好,第一次在 Stack Overflow 上提问。

所以我的问题如下:当插入一行到tableA时,需要计算奖励积分,并且必须将它们添加到tableB中的获得积分列中。我们也需要根据 Table B 中客户的等级计算额外积分。Table B 有一个引用 Table C 的 FK,其中包含我需要的属性,以便我计算获得的积分是正确的。

我已经设法编译了下面的代码,这些代码基本上链接了 Table A 和 B,但我不知道如何从 table C 中获取我需要的值以使其正确.

CREATE OR REPLACE TRIGGER JavierRewards
AFTER INSERT ON Purchases
FOR EACH ROW
BEGIN
    UPDATE customers
    SET customers.earned_points = customers.earned_points + Round(:New.purchase_amount * 1.5)
    WHERE customers.cust_id = :new.cust_id;
END;

有什么想法吗?第一次学习触发所以有点令人沮丧。

您可以将以下语句与额外的 select 语句一起使用:

CREATE OR REPLACE TRIGGER JavierRewards
AFTER INSERT ON Purchases
FOR EACH ROW
    v_Extra_Amount TableC.Extra_Amount%type;
BEGIN
   BEGIN
      SELECT c.Extra_Amount 
        INTO v_Extra_Amount
        FROM TableC c 
        JOIN customers s on s.c_ID = c.ID
       WHERE s.cust_id = :new.cust_id;
     EXCEPTION WHEN no_data_found THEN v_Extra_Amount := 0;
   END;

    UPDATE customers s
       SET s.earned_points = s.earned_points + Round(:New.purchase_amount * 1.5) 
                            + (:New.Purchase_amount * v_Extra_Amount)
     WHERE s.cust_id = :new.cust_id;
END;

您应该考虑将插入和更新操作都放入某个函数中,因为只有当它是最后一个选项时才应该使用触发器,恕我直言