sql - SQL 存储过程中的 "referencing old"和 "referencing new"有什么区别?

标签 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 有什么区别,它们做什么/为什么需要它们?

最佳答案

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

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

关于sql - SQL 存储过程中的 "referencing old"和 "referencing new"有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7343059/

相关文章:

Mysql IF length > then update 例子

sql - 在 SQL Server 和 Oracle 中获取今天日期的兼容语法

sql-server - 如何将可变数量的参数传递给 SQL Server 存储过程?

MySQL谜题: How to combine result in Loop?

javascript - jQuery - 选择子 div 背景图像并修改它

mysql - MySQL 中的 WHILE 语法错误

mysql - 获取某个时间范围内 2 个日期的特定数据

sql - 这些 SQL 语法有什么区别?

mysql - 无法多次调用Mysql存储过程,存在于同一个sql文件中

delphi - 提示指令的语法规范