2017-12-27 47 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; 

/

오라클 2에서 두 개의 열을 함께 곱하면 두 열의 값이 일정량을 초과하면 트리거가 실행되고이 코드가 잘못된 부분이 궁금합니다.oracle2에서 두 개의 열을 곱하는 트리거

+0

'declare' 섹션은 사용되지 않습니다. 'raise_application_error (오류 -2010'Play Time이 너무 높음'); 'raise_application_error (-20010, '재생 시간이 너무 큼')이어야 함, – Ben

+0

트리거 생성 또는 교체 BAND_T BEFORE 삽입 또는 업데이트 OF average_song_time, number_of_songs on BAND 각 행에 대해 begin 의 경우 new.average_song_time * : new.number_of_songs> 100; raise_application_error (-20010, '재생 시간이 너무 큼'); 끝; / – 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