Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Registro de modificacion de una tabla

Estas en el tema de Registro de modificacion de una tabla en el foro de Bases de Datos General en Foros del Web. Buenas a todos, Estoy realizando una base de datos que contenga la información de un dispositivo, pero que al ser modificada esa tabla haya otra ...
  #1 (permalink)  
Antiguo 04/08/2014, 10:51
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Registro de modificacion de una tabla

Buenas a todos,
Estoy realizando una base de datos que contenga la información de un dispositivo, pero que al ser modificada esa tabla haya otra que guarde el registro de la modificación. Si es posible que la tabla guarde el campo que fue modificado junto al usuario que lo hizo.
Explico mysql:
Tabla_principal
- id (identifica el número del artículo, sería un INT)
-sn (es lo que describe el artículo, sería un VARCHAR)
-estado (define el estado del artículo: dañado, en uso, activo… ETC, sería un VARCHAR)
Tabla_actualizaciones
- id (número del registro, sería un INT)
-idrecord (no sé si como VARCHAR o int pero quiero que el número del articulo modificado o quizás el estado que se cambió nuevo aparezcan aquí)
- date (esto sé que sería un TIMESTAMP para que cuando se cree el registro seria con la fecha y/u hora actual)
Con esto deseo que la primera tabla “PRINCIPAL” pueda ser modificada varias veces pero que la tabla “ACTUALIZACIONES” guarde el registro uno por uno de los cambios que se han hecho.
Agradezco de antemano el tiempo que se toman para poder brindarme su ayuda, Saludos!
  #2 (permalink)  
Antiguo 04/08/2014, 11:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Registro de modificacion de una tabla

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
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 04/08/2014, 13:12
 
Fecha de Ingreso: marzo-2014
Mensajes: 21
Antigüedad: 10 años
Puntos: 0
Respuesta: Registro de modificacion de una tabla

Cita:
Iniciado por gnzsoloyo Ver Mensaje
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 [URL="http://dev.mysql.com/doc/refman/5.0/es/binary-log.html"]log binario [/URL]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: [url]http://logging.apache.org/log4net/[/url]
[url]http://www.codeproject.com/Articles/140911/log-net-Tutorial[/url]
[url]http://rmottap.blogspot.com.ar/2012/05/tutorial-log4net.html[/url]
Muchas gracias por tu tiempo y respuesta, soy nuevo en esto y tambien en el foro (hace ya 4 meses) me costo hasta ejercer esta pregunta ya que no esta en las opciones.
Bueno respecto a esto tomare en cuenta lo que mencionas, creo que buscare otras alternativas. Por otra parte, mi enfoque es relacionado con HTML, PHP Y MYSQL, pero me cuesta mas el MYSQL y sobre todo las relaciones me podrias recomendar un link de algun manúal que te explique que es una llave foranes, para que sirve el indice, y ese tipos de cosas?.
Se que en internet hay muchos tutoriales, pero hablan tanto que no dicen nada, deseo algo mas para novato y que explique cada funcion de mysql.
Agradezco nuevamente por el tiempo dedicado, Gracias y saludos

Etiquetas: modificacion, mysql, registro, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:45.