2013-02-27 97 views
0

我有一個表與分別與類型(數字,整數,整數,整數,浮點數)的列(id,t1,t2,t3,標記) 我想插入學生id的值,測試1分數,test2分數和測試3分數。 使用觸發器我想在列'標記'中插入三個測試分數的平均值。觸發SQLPLUS

這是我寫的觸發器,但是它給出了編譯錯誤。

create or replace trigger trigger_2 before insert on grades 
    for each row 

declare 
total integer ; 
begin 
total := :NEW.t1 + :NEW.t2 + :NEW.t3  
:NEW.mark := total/3.0; 
end; 
SQL>/

Warning: Trigger created with compilation errors.` 
+0

什麼數據庫這是什麼? – Incognito 2013-02-27 06:31:30

+1

另外,你似乎錯過了本行末尾的半列總數:=:NEW.t1 +:NEW.t2 +:NEW.t3' – Incognito 2013-02-27 06:31:53

+1

'show error'告訴你什麼? – 2013-02-27 09:20:32

回答

0

這是(如果你在Oracle 10g中):

CREATE OR REPLACE TRIGGER trigger_2 
    BEFORE INSERT ON grades 
    FOR EACH ROW 
BEGIN 
    :NEW.mark := (:NEW.t1 + :NEW.t2 + :NEW.t3)/3; 
END; 
/
+3

在觸發器內部提交是一個很壞的主意。 – Ben 2013-02-27 11:27:32

0

雅只是嘗試這個模板花花公子

CREATE OR REPLACE TRIGGER <trigger_name> 
     BEFORE INSERT ON grades 
     FOR EACH ROW 
    BEGIN 
     :NEW.mark := (:NEW.<val1> + :NEW.<val2> + :NEW.<val3>...<valn>)/n; 
    END; 
    /