触发器中经常会用到NEW和OLD两个关键字,这是系统默认的吗?只要带上NEW或者OLD,系统就知道是新数据还是老数据?
CREATE OR REPLACE TRIGGER trg_del_emp_info
  BEFORE DELETE
  ON emp
  FOR EACH ROW
  DECLARE
    -- local variables here
  BEGIN
    INSERT INTO emp3(autoid,deptno,empno,ename,del_rq)
          VALUES(seq_trg_del_autoid.NEXTVAL,:OLD.deptno,:OLD.empno,:OLD.ename,sysdate);
  END;
NEW关键字在什么情况下使用?

解决方案 »

  1.   

    oracle默认的 用old代表老数据 new代表新数据 不过二者在使用时是有限制的
    insert时 只有new 没有old 
    delete时 只有old 没有new
    update时 二者都可用
      

  2.   

    :new --为一个引用最新的列值;
    :old --为一个引用以前的列值; 这两个变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old; 
      

  3.   

    oracle默认的 用old代表老数据 new代表新数据 不过二者在使用时是有限制的
    insert时 只有new 没有old 
    delete时 只有old 没有new
    update时 二者都可用