Триггер Oracle SQL приводит к ошибке компиляции - PullRequest
0 голосов
/ 04 февраля 2012

У меня проблема с неработающим триггером. Вот мой триггерный код

create or replace trigger "ZIVOTINJE_T2"
BEFORE
insert or update on "ZIVOTINJE"
for each row
begin
IF new.cijena>10 THEN
    :new.cijena:=9.9

ELSEIF new.cijena<0 THEN
    :new.cijena:=0.1
END IF;
end;

Когда я пытаюсь вставить сущность в таблицу ZIVOTINJE, я получаю это

ORA-04098: trigger 'DENISS.ZIVOTINJE_T2' is invalid and failed re-validation

Ответы [ 2 ]

5 голосов
/ 04 февраля 2012

Я вижу три проблемы в коде вашего триггера:

  • Необходимо обратиться к новым значениям строки, используя :new (включая двоеточие), а не new.

  • Чтобы изменить значения, которые будут вставлены / обновлены, введите :new.cijena := 9.9; вместо SET new.cijena=9.9. Обратите внимание, что (a) здесь нет ключевого слова SET; (б) оператор присваивания :=, а не =; и (c) вам нужна точка с запятой в конце строки.

  • Используйте ELSIF вместо ELSEIF.

Наконец, в SQL * Plus вы можете использовать SHOW ERRORS TRIGGER "ZIVOTINJE_T2" для отображения ошибок этого триггера.

0 голосов
/ 04 мая 2013

попробуйте это.

СОЗДАНИЕ ИЛИ ЗАМЕНА ТРИГГЕРА "ZIVOTINJE_T2" ПЕРЕД вставкой или обновлением "ZIVOTINJE" для каждой строки начинаются IF: new.cijena = 10 THEN: new.cijena: = 9.9;
ИЛИ ЕСЛИ: new.cijena <0 THEN: new.cijena: = 0,1;END IF;конец если;конец; </p>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...