Oracle触发器之替代触发器
替代触发器 替代视图增删改操作。视图可以认为成逻辑上的一张表,类似于把一个sql语句的执行结果永久的像表存储到数据 库中,视图一般用来做查询。 创建视图的语法: create view 视图名称 as sql语句;
有的时候是有删除或者修改视图数据这种需求的,所以可以创建替代触发器,来执行视图的删除操作。 创建替代触发器语法: 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的删除操作
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
--创建视图 ,存储部门编号,部门的平均工资,部门总人数,部门员工的最高工资 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;但是,数据库是不允许从视图中删除或者修改数据:



更多精彩