如何识别 Oracle 中最近更新的记录?
How to identify recently updated records in Oracle?
如何查询 Oracle(11.2.0.4.0) 数据库以识别最近几分钟更新的记录?没有用于存储上次修改时间戳的列,我不是在寻找用于识别最近几分钟内“插入”而不是上次“更新”的记录的查询。
假设 table A 有 10 条记录,B 是主键。有一列 'enable' 的值为 1 或 0。9 条记录的值为 enable 1,1 条记录的值为 0。如果我将其中一条记录(具有 enable=1)更新为 0,那么如何识别它特定的更新记录 ?
下面的查询给出了 2 条记录(应该 return 只有 1 条记录)-
select * from A
where enable = 0
and B in (select B from A as of TIMESTAMP (SYSTIMESTAMP - INTERVAL'5'MINUTE));
如果没有一些示例数据,很难准确地遵循您的要求,但我认为您希望它比较 table 以查找与 5 分钟前的值相比发生变化的行(您可以使用 MINUS
),然后过滤以仅显示 ENABLE
值为 0
的行。类似于:
SELECT *
FROM (
SELECT * FROM A
MINUS
SELECT * FROM A AS OF TIMESTAMP ( SYSTIMESTAMP - INTERVAL '5' MINUTE )
)
WHERE ENABLE = 0;
如何查询 Oracle(11.2.0.4.0) 数据库以识别最近几分钟更新的记录?没有用于存储上次修改时间戳的列,我不是在寻找用于识别最近几分钟内“插入”而不是上次“更新”的记录的查询。
假设 table A 有 10 条记录,B 是主键。有一列 'enable' 的值为 1 或 0。9 条记录的值为 enable 1,1 条记录的值为 0。如果我将其中一条记录(具有 enable=1)更新为 0,那么如何识别它特定的更新记录 ?
下面的查询给出了 2 条记录(应该 return 只有 1 条记录)-
select * from A
where enable = 0
and B in (select B from A as of TIMESTAMP (SYSTIMESTAMP - INTERVAL'5'MINUTE));
如果没有一些示例数据,很难准确地遵循您的要求,但我认为您希望它比较 table 以查找与 5 分钟前的值相比发生变化的行(您可以使用 MINUS
),然后过滤以仅显示 ENABLE
值为 0
的行。类似于:
SELECT *
FROM (
SELECT * FROM A
MINUS
SELECT * FROM A AS OF TIMESTAMP ( SYSTIMESTAMP - INTERVAL '5' MINUTE )
)
WHERE ENABLE = 0;