Ретроспективные запросы
Также в Oracle 1 Og поддерживаются ретроспективные запросы (flashback queries) — запросы, которые отслеживают предыдущие значения результатов, запрошенных в инструкции SELECT. В следующем фрагменте кода мы выполним обычный запрос к таблице, потом изменим данные в таблице при помощи предложения UPDATE, а затем выполним запрос предыдущей версии данных. Сначала выполняем обычный запрос.
SELECT
salary
FROM employees
WHERE last_name=’McCreary’;
Результат будет следующий.
SALARY
3800
Теперь изменим значение в таблице employees и выполним запрос, чтобы получить текущее значение.
UPDATE employees SET
salary=4000
WHERE Iast_namo=’McCreary’;
SELECT
salary
FROM employees
WHERE last_name=’McCreary’;
Результат будет следующий.
SALARY
4000
И наконец, выполним ретроспективный запрос, чтобы увидеть, какой была зарплата в прошлом.
Результат будет следующий.
SALARY
3800
Если бы нам были нужны более подробные сведения, мы могли бы найти все значения salary за определенный период времени, скажем за последние два дня.
SELECT salary
FROM employees VERSIONS
BETWEEN TIMESTAMP
SYSTIMESTAMP — INTERVAL ‘1’ MINUTE AND
SYSTIMESTAMP — INTERVAL ‘2’ DAY WHERE last_name=’McCreary’;
Результат будет следующий.
SALARY
4000 3800