Триггеры Mysql: OLD и NEW как строка / xml / параметр? - PullRequest
1 голос
/ 29 декабря 2010

Я хотел бы сохранить все изменения в моих таблицах (в MySQL). Я создал таблицу аудита для отслеживания всех изменений всех таблиц в одной таблице (поэтому мне не нужно создавать таблицы аудита для каждой таблицы).

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

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

Кто-нибудь знает, как это сделать? Может быть, какая-то сериализация записей OLD и NEW в строку ??

1 Ответ

0 голосов
/ 16 февраля 2011

Единственное решение, которое я смог получить, - это проверка значений OLD & NEW для каждого поля в моей таблице.

BEGIN

-- record changes to table log_new

IF OLD.fieldA != NEW.fieldA
OR OLD.fieldB != NEW.fieldB
THEN

INSERT INTO log_new (
...