在oracle中通常如果视图的数据源来自单表则该视图可以进行更新。而如果视图数据源来自两个以上表时这个视图是不可更新的。但有时候为了操作的方便我们更希望能够对多表视图也进行更新。

这时候我们可以通过建立更新触发器来替代该视图原有更新以达到多表更新的效果

例如:

3.1 创建测试数据表
--===================================================
--创建测试表
--===================================================
Drop Table t1;
Drop Table t2;
create table t1
( t11 numeric(28),t12 varchar2(20));
create table t2
( t11 numeric(28),t22 varchar2(20));

3.2 多表视图范例
--===================================================
--创建测试视图
--===================================================
create Or Replace view t as
   select T1.t11 f1 ,T1.t12 f2 ,T2.t22 f3
      from T1,T2 
      Where T1.t11=T2.t11;

3.3 多表视图触发器范例      
--===================================================
--创建视图的替代触发器
--===================================================
Create Or Replace Trigger Trg_InsUpdDel_t
  Instead Of Insert or update or delete
  on t
  for each row
Declare
begin
   If Inserting Then
      Insert Into t1 (t11,t12) Values (:New.f1,:New.f2);
      Insert Into t2 (t11,t22) Values (:New.f1,:New.f3);
   elsif Updating Then
      Update t1 set t11=:New.f1,t12=:New.f2 where t11=:New.f1;
      Update t2 set t11=:New.f1,t22=:New.f3 where t11=:New.f1;
   elsif Deleting then
      Delete from t1 where t11=:Old.f1;
      Delete from t2 where t11=:Old.f1;
   End if;
end;
如此即实现多表可更新视图的定义工作 。

但要注意当视图进行重新编译的时候这个触发器会失效需要重建。

转载于:https://www.cnblogs.com/zhaofengchao/archive/2009/04/14/1435934.html

oracle更新视图。相关推荐

  1. oracle开放视图,Oracle视图

    Oracle视图 在Oracle中,视图是实际上并不存在的虚拟表.它存储在Oracle数据字典中,不存储任何数据.可以在调用时执行. 通过连接一个或多个表的查询创建视图. Oracle创建视图 句法: ...

  2. oracle数据库视图:定义、查询与更新 实践学习报告

    本篇博客分享SQL语言视图操作--详细实践学习报告(以截图方式展示) 软件:Oracle SQL Developer 目录 1.学生-课程数据库 2.视图 ①定义视图 ②查询视图 ③更新视图 ④视图的 ...

  3. oracle12c视图刷新,Oracle可更新视图

    在本教程中,您将学习Oracle可更新视图以及如何通过视图在基表中插入或更新数据. 视图就像一个表,因为可以像表一样从中查询数据.但是,不能总是通过视图来操作数据.如果针对视图的语句可以被转换成针对基 ...

  4. oracle 物化视图、中间表的方案

    物化视图 有个项目因为有比较多的查询汇总,考虑到速度,所以使用了物化视图.简单的把用到的给整理了下.先看简单创建语句: create materialized view mv_materialized ...

  5. Oracle物化视图的创建及使用(一

    Oracle物化视图的创建及使用  http://blog.csdn.net/tegwy/article/details/8935058  先看简单创建语句: create   materialize ...

  6. Oracle物化视图的简单使用

    最近有个项目因为有比较多的查询汇总,之前用的是oralce的临时表,但临时表的特性导致无法完成业务需求,所以使用了物化视图. 先看简单创建语句: //创建物化视图 create materialize ...

  7. Oracle物化视图与物化视图日志

    文章目录 物化视图 物化视图与普通视图的区别 创建一个存放person的表 创建一个存放person的address的表 初始化数据 创建物化视图的语句 1.build [immediate|defe ...

  8. Oracle——物化视图

    文章目录 含义 物化视图的语法 物化视图的创建 1.自动刷新的物化视图 ON COMMIT 2.非自动刷新的物化视图 ON demand 关于手动刷新 物化视图的删除 资料参考 含义 什么是物化视图? ...

  9. oracle 物化视图没效果,Oracle物化视图失效的几种情况及测试

    物化视图(Materialized Views)是查询的结果集,所有原表和视图的变更都将导致物化视图的失效,最近就发现了一个物化视图经常失 说明:物化视图(Materialized Views)是查询 ...

最新文章

  1. jupyter怎么调字体_AJ里最低调的系列之一:Air Jordan 3
  2. 爬虫学习笔记(二十)—— 字体反爬
  3. python怎么将输入的数字变成列表_Python键盘输入转换为列表的实例
  4. mysql的安装备份恢复_安装使用Percona XtraBackup来备份恢复MySQL的教程
  5. bash: shasum: command not found
  6. (18)System Verilog禁止约束语句
  7. 大数据之-Hadoop3.x_MapReduce_自定义outputformat案例完善执行---大数据之hadoop3.x工作笔记0123
  8. 达摩院李雅亮:大规模预训练模型的压缩和蒸馏
  9. POJ 1004:Financial Management
  10. 从优秀到卓越 pdf_演讲口才培训:演讲能力是卓越领导者需要具备的能力
  11. 笔记本安装linux无线网卡,笔记本安装centos7 无线网卡启动不起来,那位大神看看?...
  12. 【汇编】DOS系统功能调用(INT 21H)
  13. java电信计费项目_基于jsp的电信计费-JavaEE实现电信计费 - java项目源码
  14. 优化概率神经网络_贝叶斯神经网络BNN(推导+代码实现)
  15. (对对碰)软工结对作业
  16. c++ | 尝试攥写头文件遇到的坑
  17. 弘辽科技:淘宝新链接要怎么补流量?有没有提升新链接的办法?
  18. 黑白琴键 java_黑白琴键上的爱阅读答案
  19. UEFI引导+GPT分区模式如何安装win10原版镜像或ghost版
  20. Fail2Ban 简介与使用

热门文章

  1. python创建二维数组的方法_Python创建二维数组的正确姿势
  2. 单片机两个正玄波信号的相位差计算_51单片机的定时器/计数器的原理与使用
  3. Mysql学习总结(59)——数据库分库分表策略总结
  4. WebService学习总结(2)——WebService是什么?
  5. sql 过滤空值_图解 SQL,这简直太形象了吧!
  6. C语言终极宝典微盘,C语言终极面试宝典.pdf
  7. php自学目录,PHP学习笔记(二) 了解PHP的基本语法以及目录结构
  8. 【linux基础】16、软件包管理
  9. 推荐10款 好用的 Jquery 评分插件
  10. 优酷的多页画在同一窗口打开效果。