TRIGGER用于积分求和

时间:2016-05-20 14:27:55

标签: sql oracle triggers summary

在我的表格团队中包含:

  • 名称
  • 绘制
  • 损失

现在我想做一个触发器,它总结胜利,吸引,损失并将其放入积分栏。 赢* 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

2 个答案:

答案 0 :(得分:2)

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

以下是如何更新表格的触发记录中的字段:

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

答案 1 :(得分:0)

这是你想要的吗?

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;

这会在每行中添加点数。我不确定为什么你需要从多行添加点。