“引用旧”和“旧”有什么区别?在SQL存储过程中“引用新的”?

时间:2011-09-08 04:16:27

标签: sql stored-procedures syntax triggers informix

我不确定这种语法是否特定于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 ASREFERENCING NEW AS之间的区别是什么?他们做了什么/为什么需要它们?

2 个答案:

答案 0 :(得分:6)

“OLD”是更新前行中的数据。 “NEW”是更新完成后将在行中的数据。如果您希望触发器根据它执行操作,则需要访问此信息;通常,你确实想要这个,尽管并非总是如此。

本页对Informix上下文中使用触发器的这一方面进行了更长时间的讨论: http://www.pacs.tju.edu/informix/answers/english/docs/dbdk/infoshelf/sqlt/15.fm3.html

答案 1 :(得分:3)

触发器发生的值before and after;如下所述。

  

许多触发式SQL语句需要引用当前的数据   由导致它们触发的数据库事件更改。该   触发式SQL语句可能需要引用新的(更改后或   “之后”)值。

     

...更改的数据可以参考   使用转换变量或转换的triggered-SQL语句   表。引用子句允许您提供关联   通过指定OLD / NEW AS来指定这些转换变量的名称或别名   correlation-Name。