示例17 创建触发器

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值