2017-01-18 1 views
0

Я пытаюсь получить триггер в таблице PACKS, которые устанавливают значение min в поле INT - PRICE при вставке нового PACK - например, «333». для вставки, вызывающей новый пакет «Процедура». тот триггер:Oracle SQL Trigger для установки min Значение в поле INT по NULL

CREATE OR REPLACE TRIGGER pack_min_price 
BEFORE 
INSERT 
ON PACKS 
FOR EACH ROW 
BEGIN 
IF new.PRICE < 333 THEN 
:new.PRICE := :new.PRICE + 333; 
END IF; 
END; 

и тот ПРОЦЕДУРУ:

create or replace PROCEDURE newPack(
cntr IN PACKS.COUNTRY%TYPE, 
trns IN PACKS.TRANSPORT%TYPE, 
htl IN PACKS.HOTEL%TYPE, 
extr IN PACKS.HOTELEXTRAS%TYPE, 
othextr IN PACKS.OTHEREXTRAS%TYPE, 
strdt IN PACKS.STARTDATE%TYPE, 
enddt IN PACKS.ENDDATE%TYPE, 
prc IN PACKS.PRICE%TYPE) 

IS 
BEGIN 
    INSERT INTO PACKS 
    (COUNTRY,TRANSPORT,HOTEL,HOTELEXTRAS,OTHEREXTRAS,STARTDATE,ENDDATE,PRICE) 
VALUES 
    (cntr,trns,htl,extr,othextr,strdt,enddt,prc); 

COMMIT; 

END; 

ошибка я получаю, когда я пытаюсь скомпилировать курок -

Compilation failed, line 2 (10:12:41) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers. 
PLS-00201: identifier 'NEW.PRICE' must be declaredCompilation failed, line 2 (10:12:41) The line numbers associated with compilation errors are relative to the first BEGIN statement. This only affects the compilation of database triggers. 
PL/SQL: Statement ignored 

и когда я начала процедуры -

ORA-04098: trigger 'PROJECT160.PACK_MIN_PRICE' is invalid and failed re-validation 

без триггера процедура работает отлично. Вы можете помочь? thx

ответ

0

Вам не хватает: в новом экземпляре в инструкции IF.

IF :new.PRICE < 333 THEN 
    :new.PRICE := :new.PRICE + 333; 
END IF; 
+0

я думаю, что мне нужен кофе :( –

+0

Случается все время: P просто рад помочь я проверил и Oracle SQL Developer поймал его на компиляции.. – Thor

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