Вот как я это делаю в нашей среде временной базы данных:
Убедитесь, что ваши архивные таблицы содержат копии текущих последних записей плюс все предыдущие версии.
Вам также понадобятся столбцы valid_from
и valid_to
в каждой таблице для записи времени, в которое каждая версия записей была действительной. Вы можете заполнить их с помощью триггеров при записи в таблицу архива ..
Valid_to
в последней версии записи может быть установлена максимальная доступная дата. Когда вставляется более новая версия записи, вы обновляете valid_to
предыдущей версии, чтобы она была непосредственно перед valid_from
новой записи (это не то же самое, чтобы избежать ошибок) ..
Затем, когда вы хотите увидеть, как ваши данные выглядели в данный момент времени, вы запрашиваете каждую таблицу с помощью SQL, например:
SELECT *
FROM table a
JOIN table b ON .....
WHERE <time you're interested in> BETWEEN a.valid_from AND a.valid_to
AND <time you're interested in> BETWEEN b.valid_from AND b.valid_to