PLSQL: NEW и: OLD

Может ли кто-нибудь заставить меня понять, когда использовать :NEW и :OLD в блоке PLSQL, мне очень сложно понять их использование.

Ответы

Ответ 1

Обычно вы используете термины в trigger, используя :old для ссылки на старое значение и :new для ссылки на новое значение.

Вот пример из документации Oracle, связанной с выше

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;

В этом примере триггер срабатывает BEFORE DELETE OR INSERT OR UPDATE :old.sal будет содержать зарплату до запуска триггера, а :new.sal будет содержать новое значение.

Ответ 2

: Новое и: значение Old можно дифференцировать в заявлениях DML.
Вставить - : Старый= NULL : Новый= Введенное новое значение

Обновить - : Старый= Значение, присутствующее в таблице перед оператором Update Triggered : New= С учетом нового значения Update

Удалить - : Старый= Значение перед удалением : Новый= NULL

Ответ 3

: old и: new - псевдослужбы, относящиеся к данным уровня строки доступа при использовании триггера уровня.

  • : old - относится к старой ценности
  • : new - относится к новому значению

Для операции "Ниже" соответствующие старые и новые значения:

  • INSERT -: old.value = NULL,: new value = post insert value
  • DELETE -: old.value = Pre Удалить значение: новое value = null
  • UPDATE -: old.value = значение для предварительного обновления, новое value = сообщение обновления Значение

Например:

CREATE OR REPLACE TRIGGER get_dept
  BEFORE DELETE OR INSERT OR UPDATE ON employees
  FOR EACH ROW
BEGIN
    DBMS_OUTPUT.PUT('Old Dept= ' || :OLD.dept|| ', ');
  DBMS_OUTPUT.PUT('New Dept= ' || :NEW.dept );
END;

Заявление о запуске:

UPDATE employees
SET dept ='Accounts'
WHERE empno IN (101 ,105);

Ответ 4

: new означает новое значение, которое вы пытаетесь вставить : old означает существующее значение в базе данных

Ответ 5

: old - это старое значение : новое ваше новое значение,

он используется много в триггерах, например, с полями Creation_Date и Modified_By

Ответ 6

: new - новое значение. После запуска триггера это значение столбца : old - старое значение. После запуска триггера это значение заменяется на                      : новое значение