Инкрементальный запрос Oracle в таблице без идентификатора или отметки времени - PullRequest
0 голосов
/ 08 октября 2018

Мне нужно регулярно извлекать данные из таблицы Oracle 11, используя sqlplus .Например, мне нужно каждый день извлекать новые строки, вставленные в эту таблицу.

В таблице с первичным ключом, например 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 голосов
/ 09 октября 2018

Как я и подозревал, простого решения не существует.Это должно быть одно из:

  • Добавление столбца идентификатора или метки времени
  • Выполнение различий с использованием флэшбэка
  • Добавление триггера при вставке в таблицу

К сожалению, ничего из этого не практично в моей среде.Дело закрыто!

0 голосов
/ 08 октября 2018

Один из способов - включить флэшбэк, а затем вы можете сделать:

SELECT * FROM table_name
MINUS
SELECT * FROM table_name AS OF TIMESTAMP SYSTIMESTAMP - INTERVAL '1' DAY;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...