使用MySQL记录所有表上的所有事件

时间:2013-09-13 09:57:28

标签: mysql sql events logging triggers

我需要记录表database_log(id,user,timestamp,tablename,old_value,new_value)中所有表的所有事件。

我以为我可以在所有表​​(~25)上创建相同的触发器,用一个小的php脚本动态替换名称的表。但在这种情况下,我可以检索旧值和新值,因为所有表都没有相同的列,所以我不能只在“old_value”和“new_value”中将所有字段连接到商店(即使我在模式中检索字段因为我不能在它上面使用concat()来选择所有值并存储在变量中。

例如:

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

其中addLog是使用旧值并添加其他信息的行的过程,可以挽救我的生命。

所以,我正在寻找一个性感的解决方案,只需一个触发器和/或一个程序(通过表格)或一个有用的工具。有人有解决方案吗?

由于

1 个答案:

答案 0 :(得分:0)

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

通用查询日志是mysqld正在做什么的一般记录。当客户端连接或断开连接时,服务器会将信息写入此日志,并记录从客户端收到的每个SQL语句。

请参阅MySql Documentation