Welcome 微信登录

首页 / 数据库 / MySQL / ora-01779错误

在对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的键的判定。Oracle EBS系统整体备份(冷备份)Oracle 普通表与分区表转换相关资讯      Oracle错误日志 
  • Oracle 11g安装中遇到的问题及解决  (11/30/2012 18:49:13)
  • 重启数据库遇到PRCR-1079,CRS-  (08/17/2012 09:40:27)
  • ORA-32004 的错误处理  (08/04/2012 15:46:08)
  • ORA-01652,temp表空间不足的相关  (10/15/2012 15:50:12)
  • ORA-00245 错误解决  (08/17/2012 09:37:43)
  • ORA-04031错误的解决思路  (07/30/2012 15:14:18)
本文评论 查看全部评论 (0)
表情: 姓名: 字数