2013-09-13 2 views
0

Мне нужно регистрировать все события во всех таблицах в таблице database_log (id, user, timestamp, tablename, old_value, new_value).Зарегистрировать все события во всех таблицах с MySQL

Я думал, что могу создать один и тот же триггер для всех таблиц (~ 25) с небольшим скриптом php, динамически заменяющим таблицу имен. Но в этом случае я могу получить старое и новое значение, потому что у всех таблиц нет одинаковых столбцов, поэтому я не могу просто конкатрировать все поля для хранилища в «old_value» и «new_value» (даже если я извлекаю поля в схеме потому что я не могу использовать concat() для этого, чтобы выбрать все значение и сохранить в переменной).

Для Exemple: с

SELECT * into v_myvar FROM my_table where id=OLD.id; 
CALL addLog(v_myvar) 

Где addLog является процедурой принятия моего старого значения и добавьте строку с другой информацией, может спасти мою жизнь.

Итак, я ищу сексуальное решение с одним триггером и/или одной процедурой (по таблице) или полезным инструментом. У кого-то есть решение?

Благодаря

ответ

0
SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

Общий журнал запросов общая запись о том, что туздЫ делает. Сервер записывает информацию в этот журнал, когда клиенты подключаются или разъединяются, и регистрирует каждый SQL-запрос, полученный от клиентов.

См. MySql Documentation

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