• Oracle触发器之替代触发器


    替代触发器
    替代视图增删改操作。视图可以认为成逻辑上的一张表,类似于把一个sql语句的执行结果永久的像表存储到数据
    库中,视图一般用来做查询。
    创建视图的语法:
    create view 视图名称 as sql语句;
    --创建视图 ,存储部门编号,部门的平均工资,部门总人数,部门员工的最高工资
    create view vi_dept as
    select d.deptno ,avg(e.sal) avg_sal,count(e.empno) emp_count,max(e.sal) emp_sal
    from dept d left join emp e on d.deptno=e.deptno
    group by d.deptno
    ;
    --删除视图
    drop view vi_dept;
    使用视图和使用表一样,可以从视图中查询数据:
    select * from vi_dept where deptno=10;
    但是,数据库是不允许从视图中删除或者修改数据:
    有的时候是有删除或者修改视图数据这种需求的,所以可以创建替代触发器,来执行视图的删除操作。
    创建替代触发器语法:
    create or replace trigger 触发器名称
    instead of
    delete update insert 触发操作
    on
    视图名称 注意 替代触发器只能用到视图上
    when 触发条件
    begin
    语句块;
    end;
    注意:
    --创建视图 ,存储部门编号,部门的平均工资,部门总人数,部门员工的最高工资
    create view vi_dept as
    select d.deptno ,avg(e.sal) avg_sal,count(e.empno) emp_count,max(e.sal) emp_sal
    from dept d left join emp e on d.deptno=e.deptno
    group by d.deptno
    ;
    --删除视图
    drop view vi_dept;
    select * from vi_dept where deptno=10;1,for each row 替代触发器 默认就是行级触发器,所以就不需要加for each row了
    2,替代触发器不需要有after或者before 触发时机
    举例:写一个替代触发器,替代vi_dept的删除操作
  • 相关阅读:
    CentOS下crond定时任务详细介绍
    js随机从数组中取出几个元素
    js复制内容加版权声明代码
    crond不执行原因分析
    2015年最全的移动WEB前端UI框架
    聊聊前端排序的那些事
    Linux下修改Mysql的用户(root)的密码
    SIPp常用脚本之三:UAC
    SIPp常用脚本之二:UAS
    SIPp常用脚本之一:register注册
  • 原文地址:https://www.cnblogs.com/duguangming/p/10848954.html
Copyright © 2020-2023  润新知