CREATE TABLE emp_his AS SELECT * FROM EMP WHERE 1=2;
CREATE OR REPLACE TRIGGER del_emp
BEFORE DELETE ON scott.emp FOR EACH ROW
BEGIN将修改前数据插入到日志记录表del_emp ,以供监督使用。
INSERT INTO emp_his(deptno, empno, ename , job ,mgr , sal , comm , hiredate )
VALUES( :old.deptno, :old.empno, :old.ename , :old.job,
:old.mgr, :old.sal, :old.comm, :old.hiredate );
END;
特性INSERT UPDATE DELETE
OLD NULL 有效有效
NEW 有效有效NULL
54
54
DELETE
emp WHERE empno=7788;
DROP TABLE emp_his;
DROP TRIGGER del_emp;
这里为什么用where 1=2这个条件,我觉得这是个横不等式,他就不能建表了,但是这个例子还要建表。为什么呢?小弟不知原因,还往各位大虾指教!

解决方案 »

  1.   

    CREATE   TABLE   emp_his   AS   SELECT   *   FROM   EMP   WHERE   1=2; 
    是建一张空表
      

  2.   

    这种做法的目的
    一般是只想创建一个和EMP结构相同但没有数据的表而已,
    1=2永远不成立,
    所以emp_his表不会有数据的
      

  3.   

    是不是这张表刚开始间的时候是没有数据的,以后还可以再往里插数据呀。这是不是因为在oracle中不能直接建空表的原因呀?