一般说起视图第一反应就是无法对其中数据进行修改,如果视图只包含一张表,应该是可以update的,因为SQL会执行查询转换,将视图转成表。但是多数的视图都是多表关联,那如何对视图中的数据进行update?

下面是某个小实验:

SQL> create table t1 as select * from dba_objects;

表已创建。

SQL> create table t2 as select * from dba_objects;

表已创建。

-- 可以看到单个表建视图,是可以update

SQL> create or replace view v_test as select * from t1;

视图已创建。

SQL> update v_test set subobject_name=owner;

已更新50593行。

SQL> commit;

提交完成。

-- 多个表建视图,需要加hint BYPASS_UJVC后才能update成功

SQL> create or replace view v_test as select t1.* from

2 t1,t2 where t1.object_id=t2.object_id;

视图已创建。

SQL> update v_test set subobject_name=owner;

update v_test set subobject_name=owner *

第 1 行出现错误:

ORA-01779: 无法修改与非键值保存表对应的列

SQL> update /*+ BYPASS_UJVC */v_test set subobject_name=owner;

已更新50592行。

SQL> commit;

提交完成。

SQL> create or replace view v_test as select t1.object_id,t2.subobject_name,

2 t1.owner from

3 t1,t2 where t1.object_id=t2.object_id;

视图已创建。

SQL> update /*+ BYPASS_UJVC */v_test set subobject_name=owner;

已更新50592行。

SQL> commit;

提交完成。  通过实验可以看出使用

/*+ BYPASS_UJVC */可以完成对视图中数据的update操作。

/*+ BYPASS_UJVC */在该语句中的作用则是屏蔽掉对 唯一约束的检索。

如果能确保视图中的数据唯一性则可以直接对视图中数据进行update。

oracle 视图怎么更新数据,Update视图数据(oracle)相关推荐

  1. win10家庭版加密oracle修正,WIN10更新后解决credssp加密oracle修正问题

    WIN10修改组策略如下: 1.Win+R 快捷键,输入gpedit.msc(windows 10 家庭版请先升级专业版本) 2.依次找到如下目录 计算机配置-->管理模板-->系统--& ...

  2. MySQL 进阶 视图 -- 视图介绍、视图CRUD语法、检查选项(CASCADED、LOCAL)、视图的更新、视图作用、视图案例

    文章目录 1. 视图 1.1 视图介绍 1.2 语法 1.2.1 创建视图 1.2.2 查询视图 1.2.3 修改视图 1.2.4 删除视图 1.2.5 插入数据说明 1.3 检查选项 1.3.1 C ...

  3. oracle 视图使用rownum,Oracle数据对象--视图

    1.为什么使用视图(1)限制数据的存取:用户只能看到基表的部分信息. (2)使得复杂的查询变得容易:视图中的数据可能来自多个表. (3)使得数据相对比较独立:从项目开发的角度,模块对应视图,模块包含多 ...

  4. 第14章_视图(创建视图、查看视图、更新视图的数据、修改、删除视图)

    第14章_视图 第14章_视图 1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图? 2.2 视图的理解 3. 创建视图 3.1 创建单表视图 3.2 创建多表联合视图 3.3 基于视图创 ...

  5. mysql视图数据更新_怎么更新Mysql数据表视图中数据

    本篇文章主要给大家介绍mysql数据表中视图中数据的更新操作. 相关mysql视频教程推荐:<mysql教程> mysql数据表视图的定义及相关操作,如查询.修改.删除.添加等操作介绍,在 ...

  6. vue数组中数据变化但是视图没有更新解决方案

    vue数组中数据变化但是视图没有更新解决方案 参考文章: (1)vue数组中数据变化但是视图没有更新解决方案 (2)https://www.cnblogs.com/sufubo/p/6906261.h ...

  7. 「后端小伙伴来学前端了」Vue中 this.$set的用法 | 可用于修改对象中数组的某一个对象、 可用于更新数据到视图

    夜晚有明月,梦里有佳人 前言 最近在写老师布置的vue项目,真的说实话,每天真就是在百度.google.bing等各个搜索引擎之间反复横跳,不然就是掘金搜一搜.思否搜一搜,还有CSDN看一看.我的前端 ...

  8. vue 不能响应set结构增加数据_Vue.set()动态的新增与修改数据,触发视图更新的方法...

    参数: target:要更改的数据源(可以是对象或者数组) key:要更改的具体数据(可以是字符串和数字) value :重新赋的值 用法:向响应式对象中添加一个属性,并确保这个新属性同样是响应式的, ...

  9. vue数据改变了,视图不更新不刷新问题

    vue数据改变了,视图不更新不刷新问题 描述:在对象中添加一个属性 seen,初始想法使用for循环添加 seen 属性,然后改变这个属性去更新视图,然后发现不行. 解决,使用$set: this.$ ...

最新文章

  1. python计算多个模型在不同数据集上的预测概率、获取每个数据集上的最优模型、多个最优模型的ROC曲线进行对比分析
  2. 2016阅读总结——我的问题就是读书太少
  3. Read file, CSV read String
  4. pywebQQ-----linux下webQQ的替换者
  5. 关于Angular directive使用的语法问题
  6. Linux系统诊断-内存基础
  7. SFB 项目经验-82-Active Directory Replication Status
  8. 汇编语言 HelloWorld (详细注释版)
  9. jQuery 工具方法 (全)
  10. Python笔记_第五篇_Python数据分析基础教程_文件的读写
  11. 【ACwing 95】费解的开关——枚举 + 搜索
  12. stm32 LCD1602显示
  13. 优秀关卡设计的十个原则
  14. CD Linux启动盘,CDlinux硬盘启动制作方法。CDlinux硬盘怎样启动制作?
  15. 李白的诗: 南陵别儿童入京
  16. 千人千面算法java实现_推荐算法-recommend_system
  17. 上市公司环境信息披露合集-上市公司环保补助金额、环保税等三大维度指标(2003-2020年)
  18. 亚马逊运营怎么做广告?六大方法!
  19. abl如何调用xbl里面的protocol
  20. 【友盟+】国庆假期旅游类APP使用报告(中)

热门文章

  1. HTML5图片旋转并保存,html5图像旋转、缩放并上传
  2. RocketMQ 控制台This date have't data
  3. LITO模拟器vpc的使用方法
  4. NestedScrollView
  5. mppt光伏电池模型仿真光伏电池数学模型
  6. 亚马逊英国站自动洒水器、自动浇花器UKCA认证检测标准
  7. JavaScript 中级(三)
  8. 网络密码保护神:江民密保试用手记(转)
  9. wm6.5 开发入门
  10. 互联网时代的垄断及监管