博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle触发器之替代触发器
阅读量:4513 次
发布时间:2019-06-08

本文共 1043 字,大约阅读时间需要 3 分钟。

替代触发器
替代视图增删改操作。视图可以认为成逻辑上的一张表,类似于把一个sql语句的执行结果永久的像表存储到数据
库中,视图一般用来做查询。
创建视图的语法:
create view 视图名称 as sql语句;
--创建视图 ,存储部门编号,部门的平均工资,部门总人数,部门员工的最高工资create view vi_dept asselect d.deptno ,avg(e.sal) avg_sal,count(e.empno) emp_count,max(e.sal) emp_salfrom dept d left join emp e on d.deptno=e.deptnogroup 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的删除操作

 

转载于:https://www.cnblogs.com/duguangming/p/10848954.html

你可能感兴趣的文章
The Startup Manager FAQ
查看>>
CSS布局设计
查看>>
Lua1.0 代码分析 table.c
查看>>
描述yeild作用
查看>>
wifi万能钥匙自媒体平台开放注册(付注册流程)
查看>>
ovs ovn 学习资料
查看>>
C# string 转 bool
查看>>
iOS视频边下载边播放
查看>>
数据分列将数字转换成文本格式
查看>>
java基础语法
查看>>
把e.printStackTrace的堆栈信息打印在log.error()中
查看>>
Highsoft.Highcharts 5.0.6439.38401 key
查看>>
Kids and Prizes(SGU 495)
查看>>
如何完成dedecms外部数据库调用|跨数据库数据调用
查看>>
二维码扫描ZXing简化
查看>>
Linux Bootloader_转载
查看>>
Bootstrap 3.0正式版发布!
查看>>
spring boot--拦截器实现
查看>>
我的CSS样式记事本(1)
查看>>
事务和异常易出现的错误
查看>>