Мы внедряем новую систему с использованием Java / Spring / Hibernate на PostgreSQL. Эта система должна сделать копию каждой записи, как только будет выполнено изменение / удаление записи (записей) в таблицах. Позже отчеты аудита будут запрашивать таблицы аудита для отображения данных пользователям.
Я планировал реализовать эту функцию аудита / управления версиями, имея триггер в таблице (таблицах), который будет делать копию измененной строки (удаленной строки) «TO» ТАБЛИЦЫ с именем ENTITY_VERSIONS, которая будет иметь около 20 столбцов с именами col1, col2 , col3, col4 и т. д., в которых будут храниться столбцы из приведенных выше таблиц; Однако проблема в том, что если для управления версиями требуется более 1 таблицы и ТОЛЬКО 1 таблица TARGET (ENTITY_VERSIONS) для хранения всех версий таблиц, как мне разработать таблицу TARGET?
ИЛИ лучше, чтобы была КОПИЯ таблицы ВЕРСИИ для каждой таблицы, для которой требуется управление версиями?
Будет бонусом, если некоторые указатели на код триггеров PostgreSQL (и связанных с ними хранимых процедур) для реализации аудита / управления версиями могут быть общими.
PS: Я просмотрел Предложения по внедрению таблиц аудита в SQL Server? и вроде как ответ, за исключением того, что я НЕ знал бы, какого типа должны быть OldValue и NewValue?
P.P.S: Если в таблицах используются МЯГКИЕ УДАЛЕНИЯ (фантомные удаления) вместо ЖЕСТКИХ удалений, изменится ли какой-либо из ваших советов?