Получение триггера для вставки измененных значений столбцов только в таблицу аудита

Я использую триггер для хранения изменений в таблице аудита, я хочу сохранить только значения из столбцов, которые были изменены.

BEGIN
IF NEW.history_of_repair_trigger_fired = 1 THEN
INSERT INTO history_of_repair SET
edit_date_time=NEW.last_edited_date_time,
edited_by=NEW.edited_by,
repair_id=NEW.repair_id,
tenant_name=NEW.tenant_name,
property_id=NEW.property_id,
priority=NEW.priority,
comments=NEW.comments,
signed_off=NEW.signed_off;
END IF;
END

На данный момент это также сохраняет неизмененные значения в таблице аудита, что нежелательно.

Каков наилучший способ хранения только измененных столбцов в моей таблице аудита?

1 ответ

Решение

Исходя из ваших комментариев, я не буду беспокоиться о хранении только измененных значений - дисковое пространство дешево. Сохранение фактических значений имеет то преимущество, что упрощает восстановление записи на определенный момент времени, если вам нужно спешить. Если вам нужно создать читаемую человеком контрольную запись, сохраните ее в varchar / nvarchar и создайте сообщение в вашем триггере, собрав изменения в строку. Я мог бы хранить это в дополнение к фактическим значениям. Обратите внимание, что вы также можете предоставить табличную функцию, которая динамически создает этот читабельный для человека столбец, а не хранит его.

Другие вопросы по тегам