Получение триггера для вставки измененных значений столбцов только в таблицу аудита - PullRequest
0 голосов
/ 11 апреля 2009

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

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 Ответ

1 голос
/ 11 апреля 2009

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

...