在我的表格团队中包含:
现在我想做一个触发器,它总结胜利,吸引,损失并将其放入积分栏。 赢* 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
答案 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;
这会在每行中添加点数。我不确定为什么你需要从多行添加点。