2013-09-10 53 views
0

所以我想更新一个表。我有一个总分,然后它下面有4个分数,这些都是总分的派生属性。当其他分数中的一个得分改变时,我的触发器应该更新总分。问题与触发器和变异

create or replace trigger change_score 
after insert or update of assault_score on player_score 
for each row 
begin 
if inserting then 
    update player_score 
     set overall_score = overall_score + :new.assault_score; 
elsif updating then 
    update player_score 
set overall_score = overall_score + :new.assault_score - :old.assault_score; 
end if; 
end; 
/

这是我的触发,我已经尝试过之后,仍然有同样的错误(这是一个第二行),我不知道为什么它这样做,或者什么问题,任何帮助将不胜感激。

+0

当你说'overall_score'在其下面有4个分数时,你是什么意思?这意味着“overall_score”在一个表格中,但是随后有一个子表格,其中有4行单独的分数被汇总以产生总体分数。但你的触发器只引用一个表。你是否试图在'player_score'中维护一个聚合,该聚合还包含来自'player_score'中的其他4行的数据?这绝对是一个有助于测试案例(DDL,DML,预期结果等)的案例。 –

+0

是的,总分和其他4个分数都在同一个表中。总分是这些分数的组合。 – courtney

+0

那么在表格中有4个单独的行与不同的个人分数?您是否想将所有4行的'overall_score'设置为相同的总值? –

回答