2017-12-27 1106 views
-1
create or replace trigger BAND_T BEFORE insert or update OF average_song_time, number_of_songs on BAND 
for each row 
declare 
    average_song_time number; 
    number_of_songs number; 
begin 
    if (:new.average_song_time * :new.number_of_songs > 100) ; 
     then 
     raise_application_error(error -2010'Play Time is too high'); 
    end if; 
end; 

/

想要在Oracle2中將兩列相乘,當兩列的值達到一定數量時,我的觸發器將被觸發,只是想知道該代碼出錯的地方?觸發器在oracle2中相乘兩列

+0

'declare'節未使用。和'raise_application_error(錯誤-2010'播放時間太高');' '應該是'raise_application_error(-20010,'播放時間太高');' – Ben

+0

創建或替換觸發器BAND_T 之前 插入或更新OF average_song_time,number_of_songs on BAND for each row begin if :new.average_song_time *:new.number_of_songs> 100; then raise_application_error(-20010,'Play Time is too high'); end if; 結束; / – dan

+0

爲了將來的參考,'select * from user_errors'會顯示你的編譯錯誤。 – APC

回答

0

你做了幾個錯誤(它不適合的分號,RAISE語句中的ERROR,這裏沒用的DECLARE部分)。

看看這樣一個改進的代碼是否滿足您的需求。

create or replace trigger band_t 
    before insert or update of average_song_time, number_of_songs 
    on band 
    for each row 
begin 
    if :new.average_song_time * :new.number_of_songs > 100 then 
    raise_application_error(-20001, 'Play time is too high'); 
    end if; 
end; 
/
+0

呵呵,你是一個救生員,現在爲我工作非常感謝 – dan