может кто-то пожалуйста, объясните, что значит:новый и старый код триггера
:new
и :old
в спусковой коде.
может кто-то пожалуйста, объясните, что значит:новый и старый код триггера
:new
и :old
в спусковой коде.
:new
и :old
- это псевдо-записи, которые позволяют получить доступ к новым и старым значениям конкретных столбцов. Если у меня есть таблица
CREATE TABLE foo (
foo_id NUMBER PRIMARY KEY,
bar VARCHAR2(10),
baz VARCHAR2(10)
);
и я вставить строку
INSERT INTO foo(foo_id, bar, baz)
VALUES(1, 'Bar 1', 'Baz 1');
затем в строке уровня, прежде чем триггер вставки
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 1'
в то время как
:old.foo_id will be NULL
:old.bar will be NULL
:old.baz will be NULL
Если вы затем обновите эту строку
UPDATE foo
SET baz = 'Baz 2'
WHERE foo_id = 1
затем в до запуска обновления на уровне строк
:new.foo_id will be 1
:new.bar will be 'Bar 1'
:new.baz will be 'Baz 2'
в то время как
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 1'
Если я затем удалить строку
DELETE FROM foo
WHERE foo_id = 1
затем в перед тем удалить строки -уровень запуска,
:new.foo_id will be NULL
:new.bar will be NULL
:new.baz will be NULL
в то время как
:old.foo_id will be 1
:old.bar will be 'Bar 1'
:old.baz will be 'Baz 2'
В триггере :old
записи содержит значение перед выполнением инструкции триггера, то :new
записи содержит значение после выполнения.
В простом английском языке:
Они являются псевдонимами, которые позволяют получить доступ к информации от того, как колонна была (старой), и как это будет (новое).
Старые и новые значения доступны в обоих ДО и ПОСЛЕ ряд триггеров. Новое значение столбца может быть назначено в триггере BEFORE, но не в триггере строки AFTER (потому что оператор триггера вступает в силу до запуска триггера строки AFTER). Если триггер BEFORE изменяет значение new.column, то триггер строки AFTER, запускаемый одним и тем же оператором, видит изменение, назначенное триггером BEFORE.
Корреляционные имена также могут использоваться в булевом выражении предложения WHEN. Двоеточие должно предшествовать старым и новым квалификаторам, когда они используются в теле триггера, но двоеточие не допускается при использовании квалификаторов в предложении WHEN или опции REFERENCING.
значение old
это значение before the change
и значение new
является value to be changed
, так, например, на update set col1=10
, 10 это значение new
и значение, которое является текущим в колонке старый дальше.
На вставке, там не старое значение, только новое и на удалении не существует новое значение, только старый
ли это домашнее задание? – Sparky
дайте нам некоторый контекст – keyser
Это вопрос пересмотра, который я готов, вы должны ответить на вопрос «что подразумевается под: новым и: старым в триггерном коде?» – user1300580