当前位置:  数据库>oracle

ora-01779错误

    来源: 互联网  发布时间:2017-04-30

    本文导语: 在对update进行优化时,考虑到update from 效率比较高,但由于Oracle会对键值进行检查,导致报ora-01779错误,通过采用BYPASS_UJVC跳过Oracle的键的判定,达到同样的效果。 例子如下: update (select   /*+ BYPASS_UJVC */                ...

在对update进行优化时,考虑到update from 效率比较高,但由于Oracle会对键值进行检查,导致报ora-01779错误,通过采用BYPASS_UJVC跳过Oracle的键的判定,达到同样的效果。

例子如下:

update (select   /*+ BYPASS_UJVC */
                t1.drawref,
                t.oprtype,
                t.bl_validation,
                'F' bl_validation_new,
                t.bl_msg,
                t.bl_msg ||
                case when (t1.drawref is null and t.oprtype = 'U') then  '交易帐户编号不存在,不能更新;'                                                                  
                     when (t1.drawref is null and t.oprtype = 'D') then  '交易帐户编号不存在,不能删除;'                                                                  
                     when (t1.drawref is not null and t.oprtype = 'I') then '交易帐户编号已存在,不能插入;'                                                               
                 end bl_msg_new    
        from  s_bl2_con_pro_temp t
         left join s_bl2_con_pro t1
            on t.drawref = t1.drawref
         where
         --t.bl_user =134
            (t.OPRTYPE 'N' OR t.OPRTYPE is null) 
           and  t1.BL_DELETED(+) = 'F'
           and t1.OPRTYPE(+) in ('U','D','I')
           and t1.partition_key(+) = '201202290000'
           and t.partition_key = '201202290000'
        )
   set bl_validation = bl_validation_new,                                                                                                              
       bl_msg = bl_msg_new
;























commit;

具体说明如下:

 在我们肯定当前条件能确定记录唯一,又不是主键的时候,可以采用两种方法处理。

1、创建唯一性索引

2、update ( select /*+ BYPASS_UJVC */ a.cola va,b.colb vb from a,b where a.id=b.id) set va=vb

 BYPASS_UJVC的作用是跳过Oracle的键的判定。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何得到带有ora的行的下一行
  • 如何配置 linux 下 oracle 的 listener .ora 和
  • 浅析如何在tnsnames.ora中配置监听
  • Orcle的package中访问其它Schema的表报错ORA-00942解决方法
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • [Oracle] 浅析令人抓狂的ORA-01555问题
  • 解决报错ora-32035的方法分析
  • aq.executeQuery: ORA-00020: maximum number of processes (59) exceeded
  • ORA-00947:Not enough values (没有足够的值)的深入分析
  • solaris10 安装 ora9.2.0.1 时报错
  • 在UNIX下,我的ORA817该怎么样才可以自己启动呀?
  • 基于ORA-12170 TNS 连接超时解决办法详解
  • 安装oracle出现error:ora-01031:insufficient privilleges的解决
  • 谁能帮忙解释一下: ORA-01000 : maximun open cursors exceeded
  • 关于Oracle游标的问题(ORA-01000: maximum open cursors exceeded)
  • 我在Linux7。3下面装了一个Oracle8i,但是现在启动不起来了,总是报错ORA-01031: insufficient privileges
  • zilong28提问:Tomcat3.2报错内容是Error occurs when connecting DB: ORA-00020: maximum number of processes(59) exceeded 我应该如何解决,先谢了
  • ORA-28002 Oracle 11g存在密码过期问题解决方案
  • Oracle ORA-22908(NULL表值的参考)异常分析与解决方法
  • oracle报错(ORA-00600)问题处理


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,