В чем разница между «ссылками на старые» и «ссылками на новые» в хранимой процедуре SQL? - PullRequest
3 голосов
/ 08 сентября 2011

Я не уверен, является ли этот синтаксис специфичным для Informix, но у меня были проблемы с созданием триггера, пока я не нашел какой-то синтаксис, включающий одну или обе строки:

CREATE TRIGGER      accuplacer_trig
UPDATE OF           processed
ON                  accuplacer_rec
REFERENCING OLD AS  proc_pre_upd 
FOR EACH ROW        (EXECUTE PROCEDURE accuplacer_proc(proc_pre_upd.exam_num));

Иногда записывается как REFERENCING OLD AS alias1, NEW AS alias2

В чем разница между REFERENCING OLD AS и REFERENCING NEW AS, и что они делают / зачем они нужны?

Ответы [ 2 ]

6 голосов
/ 08 сентября 2011

«СТАРЫЙ» - это данные, которые были в строке перед обновлением. «NEW» - это данные, которые будут в строке после завершения обновления. Вам необходимо получить доступ к этой информации, если вы хотите, чтобы ваш триггер действовал на ее основе; обычно вы этого хотите, хотя и не всегда.

На этой странице более подробно обсуждается использование этого аспекта триггеров в контексте Informix: http://www.pacs.tju.edu/informix/answers/english/docs/dbdk/infoshelf/sqlt/15.fm3.html

3 голосов
/ 08 сентября 2011

Это значения до и после срабатывания триггера; как указано ниже.

Многие операторы triggered-SQL должны ссылаться на данные, которые в данный момент изменяются событием базы данных, которое вызвало их срабатывание. оператор triggered-SQL может ссылаться на новый (после изменения или "после") значения.

... Измененные данные можно найти в триггер-SQL-оператор с использованием переменных перехода или перехода столы. Ссылочная оговорка позволяет вам обеспечить корреляцию имя или псевдоним для этих переменных перехода, указав OLD / NEW AS Имя-корреляция.

...