示例17 创建触发器

来源:互联网 发布:2016淘宝开店得多少钱 编辑:程序博客网 时间:2024/06/03 21:28
/*============================================================
                       示例 创建触发器
  ============================================================*/
--需求:当职工表emp 被删除一条记录时,把被删除记录写到删除日志表中去
CREATE TABLE del_emp AS SELECT * FROM EMP WHERE 1=2; 

--创建触发器
CREATE OR REPLACE TRIGGER tr_del_emp 
   BEFORE DELETE --指定触发时机为删除操作前触发
   ON emp 
   FOR EACH ROW   --说明创建的是行级触发器 
   WHEN (old.deptno <> 10)  --触发限制:deptno的旧值不等于10,触发器就会执行
BEGIN
   --将修改前数据插入到日志记录表 del_emp ,以供监督使用。
   INSERT INTO del_emp(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;

--删除emp表中编号7900记录
DELETE emp WHERE empno=7900;--30号部门

--查看表,在del_emp表中会看见7900记录,emp中记录也被删除。
select * from emp;
select * from del_emp;

--删除emp表中编号7782记录
DELETE emp WHERE empno=7782;--10号部门

--查看表,在del_emp表无7782记录,emp中记录被删除。
select * from emp;
select * from del_emp;

--回滚删除的数据
rollback;

--删除触发器
drop trigger tr_del_emp
0 0
原创粉丝点击