/*============================================================
示例 创建触发器
============================================================*/
--需求:当职工表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