触发器 Oracle第九天_周子洪_新浪博客

  今天 我们深入点了解到触发器 虽然很多有用的地方 由于是自动的 只要满足条件的话 就会被执行

那么在这里修改了数据

因为我们这样修改的数据时不受我们控制的 会发生我们不期待的事情 比如数据完整性被修改了 存人的数据时我们想要的 那么我们增加一个业务的话 我们要修改成触发器禁止的数据样式 那么我们是插入不进去的 如果有监控插入的触发器

所以还是少用  那么在哪些地方能用呢 ?  我们使用的地方一般的就是那种主键的增加  以及主键按照我们的要求来增加 以及对数据修改的监控  还有就是日志的操作

   --自动编号的触发器 添加部门,部门为原来{zd0}部门号加1
create or replace trigger tr_emp_insert
before insert
on emp
for each row
declare
v_empno emp.empno%type;
begin
     select nvl(max(empno),0)+1 into v_empno from emp;
     :new.empno := v_empno;
end;

 

--108. 触发器练习:删除部门时,该部门的所有员工设置到10部门;而10部门则不能删除。
create or replace trigger tr_dele_dept
before delete
on dept
for each row
declare
begin
    if :new.deptno =10 then
       null;
    else
        update emp set emp.deptno = 10 where deptno = :old.deptno;
    end if;
end;

--109. 触发器练习:建立日志表,记录员工表发生变化的工号,事件类型,发生时间。
create table emp_log
(
       l_id number primary key ,
    l_empno number(6),
    l_thing_type varchar2(50),
    l_date date,
    l_thing varchar2(1000)
);
create or replace trigger tr_log_emp
before delete or update or insert
on emp
for each row
declare
    v_num number;
 v_things varchar2(500);
begin
    select count(*)+1 into v_num from emp_log;
    case
      when inserting then
        v_things := '新加入一个员工'||:new.empno;
        insert into emp_log(l_id, l_empno ,l_thing_type, l_date , l_thing )
     values(v_num,:new.empno,'insert',sysdate,v_things );
   when updating then
         v_things := '修改了这个员工 '||:new.empno;
         insert into emp_log( l_id, l_empno ,l_thing_type, l_date , l_thing )
      values( v_num,:new.empno,'update',sysdate,v_things );
   when deleting then
         v_things := '删除了这个员工 '||:new.empno;
         insert into emp_log(l_id, l_empno ,l_thing_type, l_date , l_thing )
      values( v_num,:new.empno,'insert',sysdate,v_things);
 end case;
end;

这基本上就是触发器的用处的嘛 反正这个尽量还是不要在其他的地方用  是自动执行的  不好控制

已投稿到:
郑重声明:资讯 【触发器 Oracle第九天_周子洪_新浪博客】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——