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/128564.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 深入理解getopt[通俗易懂]

    深入理解getopt[通俗易懂]getopt–解析命令的可选项【说明】getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下:1、形如:cmd[-a][-b]//对短选项的解析;2、形如:cmd[-aa_argument][-bb_argument]//对短选项及短选项的参数解析;3、形如:cmd[-a[a_argument]]//选项a的参数也是可选的情况解析4…

    2022年6月8日
    34
  • Linux 学习之创建、删除文件和文件夹命令[通俗易懂]

    Linux 学习之创建、删除文件和文件夹命令[通俗易懂]今天学习了几个命令,是创建、删除文件和文件夹的,在linux里,文件夹是目录,下面说下我学习的命令。创建文件夹【mkdir】一、mkdir命令使用权限所有用户都可以在终端使用mkdir命令在拥有权限的文件夹创建文件夹或目录。二、mkdir命令使用格式格式:mkdir[选项]DirName三、mkdir命令功能通过m…

    2022年5月28日
    29
  • 解决新版chrome跨域问题:cookie丢失以及samesite属性问题「建议收藏」

    解决新版chrome跨域问题:cookie丢失以及samesite属性问题「建议收藏」最近在使用前后端分离开发的时候,遇到了一个诡异的问题,无论如何设置跨域,同一个页面获取到的session始终不一致。发现问题:登录界面前后端分离,ajax提交登录时出错验证码接口和登录接口的session不一致(跨域问题)在网上搜索跨域问题,重新设置,问题依旧错因排除:ajax允许cookie(已经设置xhrFields:{withCredentials:true})springboot尝试设置了多种跨域方法(springboot解决跨域)深入分析:使用其它浏览器(fi

    2022年6月9日
    232
  • axisfault faultcode_转付证明怎么写

    axisfault faultcode_转付证明怎么写2007-06-26关于AxisFault的说明一般说来,不可避免的WebService的服务中也会出现异常,举个简单的例子,一个服务接受一个SOAP请求消息,获取有效负载后,进行一个数据库更新操作,而在更新操作过程中发生了SQLException,这个时候就需要告诉客户端(调用WebService)出现异常了,Axis2将异常封装成为一个AxisFault进行抛出。任何类型的…

    2022年9月13日
    0
  • java构造函数可以重载么_Java 构造函数和函数重载「建议收藏」

    java构造函数可以重载么_Java 构造函数和函数重载「建议收藏」构造函数:⑴方法名和类名相同,而且没有返回类型(包括void也没有);⑵没有返回值;⑶如果没有输入构造函数,jvm会自动帮我们创建一个不带参数,没有任何函数体的的构造函数;如果我们手动的创建了其他构造函数,就不会帮我们创建这个不带参数的构造函数了;⑷一般情况下,如果想要实现自己的构造方法,最好重载一个不带参数的构造方法。函数重载:指多个函数可以使用同一个函数名,只要它们参数列表不同,将意义相近…

    2022年6月18日
    45
  • PyCharm for Anaconda

    PyCharm for AnacondaPyCharmforAnaconda新版本的特点智能Python帮助 PyCharm提供了智能代码完成、代码检查、动态错误突出显示和快速修复,以及自动化的代码重构和丰富的导航功能。 Web开发框架 PyCharm为现代web开发框架(如Django、Flask、Google应用程序引擎、Pyramid和web2py)提供了强大的特定于框架的支持。 科学工具(新版本的)…

    2022年8月29日
    2

发表回复

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

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