TRIGGER 用于点求和

TRIGGER For points summing

在我的 table 团队中包含:

现在我想做一个触发器,将赢、平、输的总和放入积分列中。 胜*3平*1负*0

我做了类似的事情:

create or replace 
trigger Summ_points
AFTER insert ON  Team
FOR EACH ROW 
ENABLE
DECLARE
tmp Team.Points%type;
BEGIN
    select sum(Wins*3 + Draws + Losses*0) into tmp from Team;
    Update Team
    set Points=tmp;
END Summ_points;

但它不起作用,因为所有记录都已更新:/

语言: PL SQl , Oracle

这是你想要的吗?

create or replace 
trigger Summ_points
BEFORE insert ON  Team
FOR EACH ROW 
ENABLE
BEGIN
    SELECT (:new.Wins*3 + :new.Draws + :new.Losses*0) into :new.Points 
    FROM dual;
END Summ_points;

这将添加每行中的点。我不确定您为什么需要从多行添加点。

在触发器内部,您只能访问和修改触发的记录,并且只能使用 :NEW 和 :OLD 引用。

以下是如何更新 table 的触发记录上的字段:

CREATE OR REPLACE TRIGGER sum_points
BEFORE INSERT OR UPDATE ON team
FOR EACH ROW
BEGIN
    :NEW.Points := :NEW.Wins * 3 + :NEW.Draws;
END;