oracle 视图怎样修改,ORACLE视图的修改

oracle 视图怎样修改,ORACLE视图的修改一个朋友在回复的时候给出了一篇 inthirties 写的关于更新视图的帖子 简洁明了 转过来学习学习 Oracle 里视图可以 update 吗 如果在网上做出这样一个问题调查 我想很多的网友朋友 都会不假思索的回答到 不行 视图是逻辑记录 并不

一个朋友在回复的时候给出了一篇 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的,有时我们的潜意识和经验对于我们的学习很有帮助,不过

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

/*

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/226599.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午10:34
下一篇 2026年3月16日 下午10:34


相关推荐

  • 使用stress进行压力测试

    使用stress进行压力测试stress介绍stress是一款压力测试工具,可以用它来对系统CPU,内存,以及磁盘IO生成负载。安装stressapt-getinstallstress使用stress直接运行stress就会列出关于stress的简单说明root@myy/root$stress-?`stress’imposescertaintypesofcomput…

    2025年8月1日
    5
  • unity和虚幻引擎_drawcall优化

    unity和虚幻引擎_drawcall优化阅读目录前言:看看优化需要从哪里着手?CPU的方面的优化:GPU的优化内存的优化回到目录前言:刚开始写这篇文章的时候选了一个很土的题目。。。《Unity3D优化全解析》。因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因而给自己“文(dou)学(bi)”加工留下的余地就少了很多。但又觉得这块是不得不提的一个地方,平时见到很多人对此处也给予了忽略了事,需要时…

    2025年12月6日
    7
  • Degenerate_generate动词

    Degenerate_generate动词22. Generate Parentheses C++回溯法

    2022年4月20日
    53
  • shiro面试必问_面试过程中的问题与对策

    shiro面试必问_面试过程中的问题与对策一,什么是Shiro?Shiro是apache旗下一个开源安全框架,它将软件的安全认证相关的功能抽取出来,实现用户身份授权,加密,会话管理等功能,组成了一个通用的安全认证框架二,目前市场主流的安全框架有哪些?(1),shiro:轻量级的,使用方便,灵活,是apache旗下一个开源安全框架,适合任何框架(2),SpringSeurity:是spring家族的一部分很多项目会使用到Spring全家桶,相对shiro来说SpringSeurity更轻量,必须要求spring环境,相对shiro

    2022年10月10日
    4
  • Android中的跨进程通信方法实例及特点分析(二):ContentProvider

    Android中的跨进程通信方法实例及特点分析(二):ContentProvider

    2022年1月22日
    47
  • 我的世界java手机_我的世界java手机版

    我的世界java手机_我的世界java手机版我的世界java手机版是一款非常好玩的模拟经营游戏,游戏非常的自由,你几乎可以在游戏中干任何事,你可以自己建造一个世界,或是制作一个像素版的动漫人物,你还可以探索这个世界,寻找资源,你还可以和好友一起在这里进行对抗,你还在等什么,赶快来体验吧!我的世界java手机版游戏特色没有华丽的画面,没有什么游戏特效但是它最大的优势就是在于它的游戏性玩家在一个完全开放的世界,可以完全按照自己的想法建造我的世界…

    2022年7月8日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号