在对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)