Я думаю о том, как лучше всего реализовать Audit Trail в приложении, которое поддерживается MySQL. Несколько систем имеют доступ к одной и той же базе данных и таблицам, поэтому я подумал, что триггеры будут лучшим решением.
Однако я не хочу писать триггер вручную для каждой таблицы, поэтому я хочу автоматически регистрировать имя поля и данные для каждой вставки / удаления.
Что-то вроде:
INSERT INTO `audits` SET
`table_name` = 'jobs',
`table_key` = OLD.`id`,
`changed_at` = NOW(),
`notes` = (SELECT * FROM NEW);
Однако подвыбор вернет набор результатов из одной строки, который не может рассматриваться как строка. Я хочу функцию, которая возьмет эту строку и преобразует ее в:
"id = 1, name = 'something', another_field = 'data'"
Или что-то в этом роде.
Редактировать: Суть в том, что мне не нужно вводить каждое поле в каждой таблице. Там более 120 таблиц, а некоторые имеют> 100 полей. Если это невозможно в самом MySQL, думаю, я напишу небольшую программу, которая прокручивает каждую таблицу и поле и генерирует для меня SQL.