SQL触发器创建

时间:2014-04-19 19:07:23

标签: sql oracle

我需要根据存储数据的2个表创建一个触发器。

第一个表属性是id,trait1,trait2,trait3,trait4,trait5。 第二个表attiributes是id,num_submitted,sum_trait1,sum_trait2,sum_trait3,sum_trait4。

当第一个表中添加了某些内容时,触发器需要增加num_submitted,并将每个特征的值添加到各自的总和中。

以下是我目前的情况,但它会编译错误并且不会执行。我非常感谢任何帮助。

CREATE OR REPLACE TRIGGER submit_trigger    
AFTER INSERT OR UPDATE ON Surveydata    
FOR EACH ROW WHEN (surveys.survey_id = inserted.survey_id)    
BEGIN    
UPDATE surveys    
SET surveys.numSubmitted= surveydata.numSubq1mitted++, surveys.sum_q1=    
(surveys.sum_q1+new.q1),
        surveys.sum_q2= (surveys.sum_q2+new.q2), surveys.sum_q3= (surveys.sum_q3+new.q3),
        surveys.sum_q4= (surveys.sum_q4+new.q4)    
    WHERE (surveys.survey_id = new.survey_id)    
END;    

1 个答案:

答案 0 :(得分:0)

以下内容可能有所帮助:

CREATE OR REPLACE TRIGGER submit_trigger    
  AFTER INSERT OR UPDATE ON Surveydata    
  FOR EACH ROW
BEGIN 
  UPDATE surveys s
    SET s.numSubmitted = :new.numSubmitted + 1,
        s.sum_q1 = surveys.sum_q1 + :new.q1,
        s.sum_q2 = surveys.sum_q2 + :new.q2,
        s.sum_q3 = surveys.sum_q3 + :new.q3,
        s.sum_q4 = surveys.sum_q4 + :new.q4
    WHERE s.survey_id = :new.survey_id;
END; 

分享并享受。