一个朋友在回复的时候给出了一篇 inthirties 写的关于更新视图的帖子,简洁明了,转过来学习学习。

===============================================================================

Oracle里视图可以update吗?

如果在网上做出这样一个问题调查,我想很多的网友朋友,都会不假思索的回答到,不行,视图是逻辑记录,并不是物理记录,而且很多的朋友

在影响深处都有这样一个浅意识影响或者是经验。

但是在这里,我要告诉大家的是,视图是可以update,不过,这是视图不是一个普通视图。

以下这样的视图是可以update

update的情况,必须是一下情况

1. view的字段只涉及一个表。

2. 如果涉及多个表的话,被(涉及到的)view列所映射table列(或列的组合)必须是有主健约束的

3. 强制执行,方法是加上hint /*+ BYPASS_UJVC */

我们做一下实验,OS window xp profession, Oracle 10.2.0.1

SQL> CREATE TABLE test1 ( id integer primary key, num integer );

SQL> INSERT INTO test1 VALUES (1,0);

SQL> INSERT INTO test1 VALUES (2,0);

SQL> CREATE TABLE test2 ( id integer, num integer, upd integer );

SQL> INSERT INTO test2 VALUES (1,10, 0);

SQL> INSERT INTO test2 VALUES (2,20, 1);

SQL> UPDATE ( SELECT t1.id id1, t1.num num1, t2.id id2, t2.num num2 from test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1) SET num1=num2;

ORA-01779: cannot modify a column which maps to a non key-preserved table

SQL> CREATE UNIQUE INDEX test2_idx_001 ON test2 (id);

SQL> UPDATE ( SELECT t1.id id1, t1.num num1, t2.id id2, t2.num num2 from test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1) SET num1=num2;

1 row updated.

SQL> UPDATE ( SELECT /*+ BYPASS_UJVC */ t1.id id1, t1.num num1, t2.id id2, t2.num num2 from test1 t1, test2 t2 WHERE t1.id=t2.id AND t2.upd=1) SET num1=num2;

大家看到了,通过这里的实验,我们看到了,并不是所有的视图都不能update的,有时我们的潜意识和经验对于我们的学习很有帮助,不过

有时这样的浅意思和经验对我们的学习也有一些不好的影响,多思考,多怀疑,多验证,是一个学习中的好习惯,很多的固化下来的思想,并不一定是正确的,扎实的学习,不放过学习中的疑问,学会做一个正确的离经叛道者。

/*

当然,直接对视图的更新�

oracle 视图怎样修改,ORACLE视图的修改相关推荐

  1. oracle修改物化视图字段,获取物化视图字段的修改矢量(一)

    当表建立了物化视图日志之后,表的DML修改会被记录到物化视图日志中,而物化视图日志则包含了一个修改矢量,来记录哪个列被修改. 在文章 列的修改矢量可以通过2的N次方来获得,也就是POWER(2, N) ...

  2. oracle 修改视图命令,11.2.3 修改/删除视图

    11.2.3  修改/删除视图 在创建了关系视图vw_employees之后,可以对其进行修改和删除操作. 1.修改视图 修改视图的过程即为重新定义视图的过程.可以通过首先删除视图,然后再次创建实现. ...

  3. MySQL 学习笔记(5)— 视图优缺点、创建视图、修改视图、删除视图

    1. 视图概念 简单来说,视图就是一个预定义的查询语句.视图在许多情况下可以当作表来使用,因此也被称为虚拟表(Virtual Table). 视图与表最大的区别在于它不包含数据,数据库中只存储视图的定 ...

  4. Oracle总结第二篇【视图、索引、事务、用户权限、批量操作】

    前言 在Oracle总结的第一篇中,我们已经总结了一些常用的SQL相关的知识点了-那么本篇主要总结关于Oralce视图.序列.事务的一些内容- 在数据库中,我们可以把各种的SQL语句分为四大类- (1 ...

  5. Oracle笔记(十三) 视图、同义词、索引

    一.视图 在之前所学习过的所有的SQL语法之中,查询操作是最麻烦的,如果程序开发人员将大量的精力都浪费在查询的编写上,则肯定影响代码的工作进度,所以一个好的数据库设计人员,除了根据业务的操作设计出数据 ...

  6. oracle+事务开始+结束,Oracle事务和对象上集(视图、索引)

    一.Oracle事务 ·事务的含义:事务是业务上的一个逻辑单元,为了保证数据的所有操作要么全部完成,要么全部失败. 1.事务的开始是从一条SQL语句开始,结束于下面的几种情况: 1)显示提交:输入co ...

  7. oracle雾化试图_Oracle 物化视图 说明

    一.    物化视图概述 Oracle的物化视图是包括一个查询结果的数据库对像,它是远程数据的的本地副本,或者用来生成基于数据表求和的汇总表.物化视图存储基于远程表的数据,也可以称为快照. 物化视图可 ...

  8. 十三、oracle 数据字典和动态性能视图

    一.概念 数据字典是oracle数据库中最重要的组成部分,它提供了数据库的一些系统信息. 动态性能视图记载了例程启动后的相关信息. 二.数据字典 1).数据字典记录了数据库的系统信息,它是只读表和视图 ...

  9. Oracle视图添加约束,Oracle创建视图的语法

    Oracle创建视图的语法 导读:就爱阅读网友为大家分享了多篇关于 "oracle 创建序列语法" 资料,内容精辟独到,非常感谢网友的分享,希望从中能找到对您有所帮助的内容. 相关 ...

  10. 创建数据库_详解Oracle数据库物化视图及创建物化视图索引

    概述 物化视图是一种特殊的物理表,"物化"(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询,Oracle都实际上转换为视图S ...

最新文章

  1. mysql 磁盘组_AIX使用LV创建ASM磁盘组
  2. 多个网页用一个html,在多个页面使用同一个HTML片段的代码-javascript技巧
  3. 威佐夫博弈(模板题)
  4. F5基于证书认证的客户端登录
  5. ABP框架 v3.0 已发布!
  6. 微信小程序集成腾讯云 IM SDK
  7. 13种重要的云原生工具,让交付过程更快
  8. 马斯克公开特斯拉Model 3成本 价值这个数...
  9. ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp
  10. 【路径规划】基于matlab GUI D_star算法最短路径规划【含Matlab源码 634期】
  11. Win10首次开机设置
  12. OA项目之我的审批(会议查询会议签字)
  13. 分布式资源管理与任务调度框架Yarn
  14. 一段Js代码开启任意网站的匿名在线聊天室
  15. 【短视频运营】查找对标账号 ( 关键词搜索 | 第三方工具查找 | 对标账号学习 | 视频文案 | #话题 | 评论内容 | 历史视频 )
  16. 基于微信小程序的信件收发管理平台设计
  17. 从女孩儿手中音乐般滑落
  18. Pytorch版本代码修正
  19. Windows和ubuntu下一些提升效率的工具知识点以及typora和Obsidian配置
  20. 计算机二级考试模拟软件 操作流程

热门文章

  1. android amr转wav 代码,amr转wav java代码
  2. 自适应波束形成(二)——时域窄带LCMV波束形成器
  3. 奋斗吧,程序员——第四十二章 会挽雕弓如满月,西北望,射天狼
  4. TRS平台如何使文章标题换行
  5. java计算机毕业设计教务管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  6. 按照jdk后cmd输入java -version命令查询jdk版本号无结果
  7. 驰骋股市!手把手教你如何用Python和数据科学赚钱?
  8. 【专业知识问答】问:什么叫突然短路?为什么突然短路时会产生很大短路电流?
  9. mysql存储过程select into_mysql存储过程select into
  10. 让Enter键实现Tab键的功能