Как я должен проверять изменения в таблице MySQL (используя MySQL 4)?
Вопрос
Меня попросили проверить любые / все изменения в таблице MySQL. Кто-нибудь знает какие-либо инструменты, которые помогут мне сделать это, или мне нужно написать собственное решение?
Если я напишу свой собственный одитинг, я сначала подумал, что нужно создать отдельную таблицу и построить строку изменений в коде PHP. Что-то вроде " fieldname1 - > старое значение | fieldname2 - > oldvalue, ... ". Если вы столкнулись с серьезной проблемой этого метода, сообщите мне.
Решение
Единственный надежный способ зафиксировать все изменения в таблице БД - это использовать триггеры на сервере. Риск изменения вашего собственного кода для аудита изменений заключается в том, что изменения из другого приложения / пользователя и т. Д. Не будут регистрироваться.
Сказав это, я не уверен, что в MySQL 4 была поддержка триггеров.
Другие советы
Используйте триггер для обнаружения изменений и записи значения до / после в таблицу журнала.
Если вы запускаете решение вручную из-за отсутствия поддержки триггера, я настоятельно рекомендую вам не просто сохранять изменения в строковом объекте. Однажды вас попросят запросить эти данные, и вам придется выполнить кучу разборов строк, чтобы вернуть ваши данные. (Я говорю из опыта здесь.)
Самый простой подход - просто создать теневую таблицу аудита, в которой есть все те же столбцы, что и в исходной таблице, плюс столбец даты изменения и последовательный идентификатор. Затем у вас есть вся история для реконструкции в любом формате, который вам нужен, и вы можете запросить ее по желанию.
SoftTree DB Audit поддерживает MySQL, может сделать то, что вам нужно: