Как я должен проверять изменения в таблице MySQL (используя MySQL 4)?

StackOverflow https://stackoverflow.com/questions/218722

  •  03-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

Другие советы

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top