没有ID或时间戳的表中的Oracle增量查询

时间:2018-10-07 23:09:32

标签: sql oracle

我需要使用 sqlplus 从Oracle 11表中定期提取数据。例如,我每天都需要提取插入该表中的新行。

在具有主键(例如 RECORD_ID )的表上(假设它是增量插入的),该查询将是:

SELECT * from TABLE WHERE RECORD_ID > &LAST_RECORD_ID_FROM_PREVIOUS_QUERY

在带有 RECORD_DATE 时间戳的表上,类似地可以这样做:

SELECT * from TABLE WHERE RECORD_DATE > &LAST_RECORD_DATE_FROM_PREVIOUS_QUERY

我的问题是:在没有时间戳记且没有可用增量列的情况下该如何做?可以使用 ROWID 来实现吗?

2 个答案:

答案 0 :(得分:2)

一种方法是启用闪回,然后您可以执行以下操作:

SELECT * FROM table_name
MINUS
SELECT * FROM table_name AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '1' DAY;

答案 1 :(得分:0)

我怀疑没有简单的解决方案。它必须是以下之一:

  • 添加标识或时间戳记列
  • 使用闪回进行差异
  • 在表格的插入位置添加触发器

不幸的是,在我的环境中,这些方法都不可行。结案了!