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的删除操作
  • 相关阅读:
    虚方法 C++快速入门23
    抽象方法 C++快速入门24
    网址探测器 零基础入门学习Delphi41
    网址探测器 零基础入门学习Delphi41
    抽象方法 C++快速入门24
    虚方法 C++快速入门23
    运算符重载 C++快速入门25
    静态属性和静态方法2 C++快速入门22
    linux系统中的文件访问控制列表ACL
    linux系统中的文件类型
  • 原文地址:https://www.cnblogs.com/duguangming/p/10848954.html
Copyright © 2011-2022 走看看