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;
在我的 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;