2014-04-19 207 views
-1

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

第一个表格属性是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;  
+0

请添加你的忽视就行2 缺少表达编译 – kaskelotti

+0

SQL语句获取错误上遇到“文件结束”上线7 3线 但我认为这些都是词干从它正在修建错误。 – Josh

+0

是的,它是Oracle ...通过putty使用sqlplus – Josh

回答

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; 

分享和享受。

+0

谢谢我感谢您的帮助。节日快乐! – Josh