Я прочитал несколько статей в Интернете, а также несколько ответов на StackOverflow о создании контрольного журнала для приложения, управляемого базой данных.Кажется, что наиболее популярным решением является создание таблицы аудита для рассматриваемой таблицы и использование триггеров для вставки записи аудита в таблицу аудита.
Я вижу, как это будет работать для простых объектов, данные которыхсодержится в одной таблице.
А как насчет совокупных корней, которые содержат дочерние элементы?
Пример:
Порядок - это сводный корень, содержащий много строк заказа, каждая из которых имеет свою собственную таблицу в базе данных.Предположим, что у каждого также есть таблица аудита в базе данных, которая получает обновления через триггеры при изменении исходной таблицы:
tblOrders --> Trigger --> tblOrdersAudit
tblOrderLines --> Trigger --> tblOrderLinesAudit
Теперь предположим, что мы что-то изменили в Ордере, но не вносим никаких изменений ни в один из его Порядков.линии.В результате tblOrders обновляется, и триггер вставляет новую запись аудита, отражающую изменения в tblOrdersAudit.Однако в tblOrderLines не было внесено никаких изменений, и в результате в tblOrderLinesAudit нет соответствующей записи аудита.
Некоторое время спустя мне нужно увидеть более раннее состояние Ордена, возможно, для отката данных.Как мы сопоставляем записи аудита?