«Простое» и универсальное решение, которое может быть реализовано для нескольких таблиц, будет иметь таблицу отслеживания, состоящую из следующего:
Track_Table
==================================================
id_track as primary key
id_table as name of the table which has been updated
id_primaryKey as the record identifier (the PK of the updated record)
changeType, being either DEL or UPDATE
changeDate, as dateTime value
fieldName, as text
oldValue, as text or memo
newValue, as text or memo
, если вам необходимо идентифицировать пользователя, который сделалобновление, просто добавьте
userId
в вашу таблицу ...
Затем вы можете создать некоторые общие функции "перед обновлением" и "после обновления", которые будут вызываться в выбранной форме beforeUpdate исобытия после обновления.Функция beforeUpdate сохранит старое значение в переменной, а функция afterUpdate заполнит отсутствующие данные и вставит новую запись в таблицу треков.
Вам нужно будет найти способ выяснить правильное значение \соответствующее имя таблицы и имя поля.Это может быть сложно, если вы используете представления или псевдонимы полей для отображения ваших данных в формах.
Конечно, все таблицы, которым нужно следовать, должны иметь первичный ключ, чтобы вы могли отслеживать изменения на уровне записи.PK, установленные в нескольких полях, безусловно, будут проблематичными ....
oldValues и newValues придется преобразовать в текст, чтобы их можно было сохранить в текстовом или памятном поле