2009-11-08 1 views
0

Есть ли способ, который, если есть изменения в записях, что запрос, который изменил данные (обновление, удаление, вставка), можно добавить в историю «таблица прозрачно?Добавить каждое обновление, удалить, вставить запрос в новую запись в MySQL

Например, если mySQL обнаруживает изменение в записи или наборе записей, есть ли способ, чтобы mySQL добавлял этот запрос в отдельную таблицу, таким образом, мы можем отслеживать изменения? Это сделало бы «откатывание» возможным, поскольку каждый запрос (кроме SELECT) сможет восстановить базу данных из первой строки. Правильно?

Я использую PHP для взаимодействия с mySQL.

ответ

3

Необходимо включить MySQL BinLog. Это автоматически записывает все инструкции об изменениях в двоичный журнал, на который можно ответить по мере необходимости.

Альтернативой является использование функции аудита через Triggers

1

У MySQL есть функции ведения журнала, которые могут использоваться для регистрации всех запросов. Я обычно оставляю это выключенным, так как эти журналы могут расти очень быстро, но полезно при включении при отладке.

Если вы хотите отслеживать изменения в записях, чтобы вы могли «откатить» последовательность запросов, если возникает какое-либо условие ошибки, вы можете захотеть взглянуть на собственную поддержку транзакций MySQL.

Смежные вопросы