/*+ BYPASS_UJVC */ 处理数据更新时不能更新问题

在使用implict update table 时,发现其中一个表一定要有唯一约束,否则会报错!但是oracle可以使用hints:/*+ BYPASS_UJVC*/ 屏蔽掉队唯一性的检查。

update (select /*+ BYPASS_UJVC */
          *
           from t_contract_template ct,
                (select distinct (t.id) vid,
                                 t.serial_number || '-' ||
                                 substr(pkg_map.org_company2segment(c.companyid),
                                        length(pkg_map.org_company2segment(c.companyid)) - 1,
                                        2) as vnum
                   FROM t_contract_template     t,
                        t_contract_template_ver v,
                        t_template_city         c
                  where t.id = v.template_id
                    and t.id = c.templateverid
                    and v.enforce = 7
                    and t.serial_number is not null
                    and INSTR(t.serial_number, '-') = 0
                    and length(t.serial_number) = 10) vv
          where ct.id = vv.vid) tct
    set tct.serial_number = tct.vnum;

使用上面的方法,我们可以将查询出的结果集直接做更新,这样我们可以解决一下复杂表结构无法更新的问题了.


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值