2014-12-01 2 views
0

Привет, ребята, спасибо за помощь ранее. У меня теперь возникла новая проблема. Несколько шагов в моей домашней работе мне пришлось добавить дополнительную часть этого триггера. Триггер должен вычесть один из числа копий. Когда число копий достигает 0, оно должно отображаться недоступно. Я пытался в течение последних нескольких часов понять это, и это то, что я придумал. Любая помощь или предложения были бы очень признательны!Что означают эти триггерные ошибки

CREATE or REPLACE Trigger Unavailable_Rule 
BEFORE INSERT ON Transaction 
FOR EACH ROW 

BEGIN 


IF :new.Date_Rented_Out is not null AND :new.Date_Returned is NULL AND Num_Copies=1 
THEN 
    UPDATE Video 
    set Num_Copies = Num_Copies - 1, 
    Status = 'Unavailable' 
    where Vid_Num = :new.Vid_Num; 

ELSE 

Num_Copies = Num_Copies - 1; 
End IF; 
END; 
/
show errors; 

6/4 PL/SQL: SQL Statement ignored 
7/15 PL/SQL: ORA-00971: missing SET keyword 
13/13 PLS-00103: Encountered the symbol "=" when expecting one of the f ollowing: := . (@ % ; 
14/2 PLS-00103: Encountered the symbol "END" 

ответ

1

Ваше заявление update неверно. Вместо того, чтобы:

UPDATE Video 
    Num_Copies = Num_Copies -1 
    set Status = 'Unavailable' 
where Vid_Num = :new.Vid_Num; 

Присвоить Num_Copies в set:

UPDATE Video 
    set Num_Copies = Num_Copies - 1, 
     Status = 'Unavailable' 
    where Vid_Num = :new.Vid_Num; 

EDIT:

Ваше if заявление может быть заменен:

UPDATE Video 
    set Num_Copies = Num_Copies - 1, 
     Status = (case when :new.Date_Rented_Out is not null AND :new.Date_Returned is NULL AND Num_Copies = 1 then 'Unavailable' 
         else status 
        end) 
    where Vid_Num = :new.Vid_Num; 
+0

Спасибо, что сузили ошибки только для этих двух: 13/13 PLS-00103: Встретил символ «=», когда ex вызывая одно из следующих:: =. (@%; 14/2 PLS-00103: встречается символ «END» – Erica

+0

В другом случае есть что-то не так: «Num_Copies = Num_Copies -1;» Вам нужна остальная часть обновления stmt здесь? Num_Copies = Num_Copies-1 где Vid_Num =: new.Vid_Num; – Jt2ouan

+1

Это не сработало, я получил дополнительные ошибки – Erica

Смежные вопросы