Tu duda es un tema recurrente en el foro de BBDD, de cuando en cuando viene alguien para preguntar exactamente por el mismo problema, y hasta ahora la respuesta viene a ser: Si, es posible hacerlo. Pero no es muy práctico.
Es posible hacerlo, y muchos DBMS, incluyendo MySQL, tienen recursos específicos desarrollados para realizar esa trazabilidad de procesos. En el caso de MySQL normalmente se activa el
log binario y con esto se puede ver qué se hizo y en que momento.
Si no quieres usar el log binario, o no puedes por temas de permisos, te queda la opcion de implementar uno propio (lo que preguntas), pero no es muy práctico, por cuanto necesitarás registrar todas y cada una de las sentencias, con todos sus datos, en esa tabla, y meter todo eso en el mismo ciclo de inserciones/actualziaciones/borrados de tu aplicación. Eso sin duda que recargará el sistema.
Y antes que lo preguntes, NO, un trigger es una mala idea.
Necesitarías hacer un trigger por cada tabla donde haya acciones sobre los datos, y encima considerar que pueda haber otros trigger que hagan sus propias operaciones para ciertas cosas.
No es viable.
Lo del log binario es más práctico.
Existe una alternativa que usa recursos de cola de mensajes en el servidor, y que podría utilizarse. Dependerá del servidor y el lenguaje a programr, pero lo he visto como bastanbte eficeinte.
En este caso lo que se hace es que la aplicación mande al sistema un mensaje que luego se recopilan y almacenan en una base específica.
Mira este link:
http://logging.apache.org/log4net/ http://www.codeproject.com/Articles/...g-net-Tutorial http://rmottap.blogspot.com.ar/2012/...l-log4net.html