【问题标题】:SQL update query is wrongly picking SYSDATESQL 更新查询错误地选择了 SYSDATE
【发布时间】:2017-11-21 09:24:27
【问题描述】:

我正在尝试使用以下 SQL 查询更新 last_update_date 列,但 Oracle 选择的是 SYSDATE 而不是从源表中选择日期。我已经禁用了所有负责它的触发器,即使在它选择了SYSDATE 之后也是如此。任何人都可以提出为什么会这样吗?

     update el_address b
   set last_update_date =
       (select last_update_date
          from gis_prod.ev_address a
         where a.feat_num = b.feat_num
           and not (a.g_version != 0 and a.g_next_version is null)
           and a.feat_num not in (select feat_num
                                    from gis_prod.ev_address
                                   where feat_num in (select feat_num
                                                        from gis_prod.ev_address
                                                       group by feat_num
                                                      having count(feat_num) > 1)
                                     and g_next_version < 0));

【问题讨论】:

  • 很可能还有一个触发器在运行
  • 客户端系统和服务器时序不同

标签: sql oracle


【解决方案1】:

如果

select max (last_update_date) from gis_prod.ev_address 

是早于 sysdate 的日期。更新的值不能来自发布的查询。

可能是你错过了一个触发器。

【讨论】:

  • select max (last_update_date) from gis_prod.ev_address =15-NOV-17 所以它绝对不早于 SYSDATE。
猜你喜欢
  • 1970-01-01
  • 2015-05-21
  • 2016-01-14
  • 1970-01-01
  • 2012-07-16
  • 2022-01-08
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
相关资源
最近更新 更多