如何在oracle中使用null值检查last_modified日期

时间:2014-09-19 09:31:18

标签: oracle plsql

我有一个名为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;

1 个答案:

答案 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)显示了四个值。我不确定它是如何滑过编译器的,我不知道它是如何被执行的;但是,它可能有助于解释您遇到的问题。

祝你好运。