Как я должен проверять изменения в таблице MySQL (используя MySQL 4)? - PullRequest
6 голосов
/ 20 октября 2008

Меня попросили проверить все / все изменения в таблице MySQL. Кто-нибудь знает какие-либо инструменты, чтобы помочь мне сделать это, или мне нужно написать свое собственное решение?

Если я напишу свой собственный одитинг, я сначала подумал, что нужно создать отдельную таблицу и построить строку изменений в коде PHP. Что-то вроде "fieldname1 -> oldvalue | fieldname2 -> oldvalue, ...". Если вы видите серьезную проблему с этим методом, пожалуйста, дайте мне знать.

Ответы [ 4 ]

3 голосов
/ 20 октября 2008

Единственный надежный способ зафиксировать все изменения в таблице БД - это использовать триггеры на сервере. Риск изменения вашего собственного кода для аудита изменений заключается в том, что изменения из другого приложения / пользователя и т. Д. Не будут регистрироваться.

Сказав это, я не уверен, что в MySQL 4 была поддержка триггеров.

3 голосов
/ 20 октября 2008

Используйте триггер для обнаружения изменений и записи значений до / после в таблицу журнала.

2 голосов
/ 21 октября 2008

Если вы запускаете решение вручную из-за отсутствия поддержки триггера, я настоятельно рекомендую вам не просто сохранять изменения в строковом объекте. Однажды вас попросят запросить эти данные, и вам придется выполнить кучу разборов строк, чтобы вернуть ваши данные. (Я говорю из опыта здесь.)

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

0 голосов
/ 20 октября 2008

SoftTree DB Audit имеет поддержку MySQL, может сделать то, что вы ищете:

http://www.softtreetech.com/idbaudit.htm

...