【问题标题】:How to identify recently updated records in Oracle?如何识别 Oracle 中最近更新的记录?
【发布时间】:2020-10-03 19:37:30
【问题描述】:

如何查询 Oracle(11.2.0.4.0) 数据库以识别最近几分钟更新的记录?没有用于存储上次修改时间戳的列,我不是在寻找查询来识别最近几分钟内“插入”的记录,而是最后一次“更新”的记录。

假设表 A 有 10 条记录,B 是主键。有一列“启用”的值为 1 或 0。9 条记录的值为启用 1,1 条记录的值为 0。如果我将其中一条记录(启用 = 1)更新为 0,那么如何识别这个特定的更新记录?

下面的查询给出 2 条记录(应该只返回 1 条记录)-

select * from A
where enable = 0
  and B in (select B from A as of TIMESTAMP (SYSTIMESTAMP - INTERVAL'5'MINUTE));

【问题讨论】:

    标签: sql oracle oracle11g


    【解决方案1】:

    如果没有一些示例数据,很难准确地遵循您的要求,但我认为您希望它比较表格以找到与 5 分钟前的值相比发生变化的行(您可以使用 MINUS 来完成)然后过滤以仅显示ENABLE 值为0 的行。比如:

    SELECT *
    FROM   (
      SELECT * FROM A
      MINUS
      SELECT * FROM A AS OF TIMESTAMP ( SYSTIMESTAMP - INTERVAL '5' MINUTE )
    )
    WHERE  ENABLE = 0;
    

    【讨论】:

    • 像魅力一样工作。谢谢!
    猜你喜欢
    • 2020-08-01
    • 2012-09-04
    • 2014-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多