我有一个名为orders的表,其中数据每三个小时通过CSV文件加载到加载程序表中。我有一个last_modified列设置为SYSDATE
,它记录了表上的插入和更新。最近,我观察到更新发生时last_modified列的空值超过100k记录。有没有办法解决这个问题?
Merge into orders d
using (select * from ods_prm_data ) s
on (d.order_id = s.order_id)
when not matched then
insert (d.order_id ,d.ID, d.last_modified)
values (s.order_id, s.ID,s.order_seq.val,SYSDATE)
when matched then
update set d.last_modified = SYSDATE;
答案 0 :(得分:0)
查看MERGE语句的WHEN NOT MATCHED
分支。我很惊讶甚至编译了这个语句,因为INSERT字段列表(d.order_id ,d.ID, d.last_modified)
指定了三个字段,但VALUES列表(s.order_id, s.ID,s.order_seq.val, SYSDATE)
显示了四个值。我不确定它是如何滑过编译器的,我不知道它是如何被执行的;但是,它可能有助于解释您遇到的问题。
祝你好运。