Oracle Триггер NEW.SAL не был объявлен ошибкой - PullRequest
0 голосов
/ 31 января 2020

Моя проблема в том, что я сделал триггер, который проверяет, был ли обновлен столбец в SCOTT.BONUS.SALARY, и вычисляет «сколько» - поднимает и возвращает его. Он говорит, что NEW.SAL должен быть объявлен, но как он может быть объявлен, если его имя столбца ...?

CREATE OR REPLACE TRIGGER Raise 
BEFORE DELETE OR INSERT OR UPDATE ON SCOTT.BONUS
FOR EACH ROW 
WHEN (NEW.SAL > 0.1*OLD.SAL) 
DECLARE 
   howmuch number; 
BEGIN 
   howmuch := 0.1*NEW.SAL; 
   dbms_output.put_line('Bonus changed to 10% - : ' || howmuch); 
END; 
/````

1 Ответ

1 голос
/ 31 января 2020

Вам необходимо использовать :NEW в теле триггера следующим образом:

CREATE OR REPLACE TRIGGER Raise 
BEFORE DELETE OR INSERT OR UPDATE ON SCOTT.BONUS
FOR EACH ROW 
WHEN (NEW.SAL > 0.1*OLD.SAL) 
DECLARE 
   howmuch number; 
BEGIN 
   howmuch := 0.1 * :NEW.SAL;  -- changes here
   dbms_output.put_line('Bonus changed to 10% - : ' || howmuch); 
END; 
/

Cheers !!

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