zoukankan      html  css  js  c++  java
  • 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的删除操作
  • 相关阅读:
    Azure 云助手主要功能
    静态dll的问题终于搞定了
    青云QingCloud黄允松:最高效的研发管理就是没有管理
    开源libco库:单机千万连接、支撑微信8亿用户的后台框架基石
    青云QingCloud宣布完成C轮融资,金额1亿美元
    NET MVC权限验证
    Fizz-Buzz-Whizz
    API访问客户端
    使用IronPython给.Net程序
    Smart Framework
  • 原文地址:https://www.cnblogs.com/duguangming/p/10848954.html
Copyright © 2011-2022 走看看