2017-12-27 1370 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