2

与问题一样 -:new当更新完全省略触发器中引用的列时,将采用什么值?

我正在尝试调试一个存储过程,该过程在更新时触发一个触发器,该触发器使用一个函数接受:newDATE值的字段。但是,我正在运行的更新不会更新引用的列。

触发器会使用存储在运行更新的表中的值吗?或者它会从其他地方拿走它吗?

4

2 回答 2

5

如果更新语句中省略了该列,则该:NEW.column值与该值相同:OLD.column。那就是在更新语句运行之前存储在表中的值

于 2013-07-26T08:29:02.910 回答
5

文档对此并不完全清楚,但:NEW:OLD指出了当前行的版本。

因此,:NEW.col23表示新版本行中该列的值。如果事务没有更改该列的值,那么它将与 :OLD.col23. 实际上,我们可以使用它在触发器中编写测试代码,以查看更新是否更改了列中的值:

if :NEW.col23 = :OLD.col23 then
   --  value not changed
于 2013-07-26T08:51:49.653 回答