谁能告诉我 new 和 :new 之间的区别
Posted
技术标签:
【中文标题】谁能告诉我 new 和 :new 之间的区别【英文标题】:Can anyone tell me the difference between new and :new 【发布时间】:2019-03-07 11:02:16 【问题描述】:CREATE OR REPLACE TRIGGER Print_salary_changes
BEFORE DELETE OR INSERT OR UPDATE ON Emp_tab
FOR EACH ROW
WHEN (new.Empno > 0)
DECLARE
sal_diff number;
BEGIN
sal_diff := :new.sal - :old.sal;
dbms_output.put('Old salary: ' || :old.sal);
dbms_output.put(' New salary: ' || :new.sal);
dbms_output.put_line(' Difference ' || sal_diff);
END;
我无法理解上述查询中 new 和 :new 之间的区别
【问题讨论】:
【参考方案1】:详见documentation:
WHEN
子句中的NEW
用于指定触发条件。
当在 WHEN 子句中指定时,NEW 和 OLD 关键字不是 被认为是绑定变量,因此前面没有冒号 (:)。 但是,在所有引用中,您必须在 NEW 和 OLD 之前使用冒号 除了 WHEN 子句。
:NEW
是用于表示触发器正文中的新记录的伪列。
当触发行级触发器时,PL/SQL 运行时系统会创建并 填充两个伪记录 OLD 和 NEW。他们叫 伪记录,因为它们具有一些但不是全部属性 记录。
【讨论】:
以上是关于谁能告诉我 new 和 :new 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
new int[0] 和 new int[] 之间有啥区别吗[重复]
Object o = makeMeAnObjectPlease(); 之间的区别和对象 o = new Object();