Может кто-нибудь сказать мне разницу между новым и новым - PullRequest
1 голос
/ 07 марта 2019
CREATE OR REPLACE TRIGGER Print_salary_changes
  BEFORE DELETE OR INSERT OR UPDATE ON Emp_tab
  FOR EACH ROW
WHEN (new.Empno > 0)
DECLARE
    sal_diff number;
BEGIN
    sal_diff  := :new.sal  - :old.sal;
    dbms_output.put('Old salary: ' || :old.sal);
    dbms_output.put('  New salary: ' || :new.sal);
    dbms_output.put_line('  Difference ' || sal_diff);
END;

Я не могу понять разницу между новым и новым в вышеуказанном запросе

1 Ответ

3 голосов
/ 07 марта 2019

Как указано в документации :

NEW в предложении WHEN, используется для указания условия триггера.

NEW иКлючевые слова OLD, указанные в предложении WHEN, не считаются переменными связывания, поэтому перед ними не стоит двоеточие (:).Однако во всех ссылках, кроме предложения WHEN, перед NEW и OLD необходимо ставить двоеточие.

:NEW - это псевдостолбец, используемый для представления новой записи в теле триггера.

Когда срабатывает триггер уровня строки, система времени исполнения PL / SQL создает и заполняет два псевдорекорда OLD и NEW.Они называются псевдорекордами, поскольку обладают некоторыми, но не всеми, свойствами записей.

...