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

Como hacer tablas logs

Estas en el tema de Como hacer tablas logs en el foro de Mysql en Foros del Web. Nose si el nombre está "bien planteado" lo que quiero hacer es lo siguiente: tengo una tabla "que consulté anteriormente en este mismo foro " ...
  #1 (permalink)  
Antiguo 13/12/2012, 08:56
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 4 meses
Puntos: 1
Como hacer tablas logs

Nose si el nombre está "bien planteado" lo que quiero hacer es lo siguiente: tengo una tabla "que consulté anteriormente en este mismo foro" donde pongo la asignacion de un analista a cierto trámite:

Código:
tramite_analista:

id_tramite int(11) not null FK from tramites,
id_analista int(11) not null FK from analistas,
fecha DATE,
comentario varchar 100
Necesito hacer una especie de log que cuando alguien modifique un registro me quede la fecha del registro quien hizo la modificacion (eso es fácil porque lo capturo por el $_SESSION en php la fecha también) y además saber cual era el campo antesrior a ser modificado (SOLO voy a modificar el analista mas NO el tramite)

Tenía pensado agregar los campos modificado_por, fecha_modificacion

¿O debo hacer una tabla nueva?, de antemano muchas gracias
  #2 (permalink)  
Antiguo 13/12/2012, 09:32
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: Como hacer tablas logs

¿Una forma simple?
Agregale tres campos: usuario_alta, fecha_baja y usuario_baja.
Cada vez que ese registro se modifique, tomas los datos, pones la fecha de baja y el usuario modificador y das de alta un nuevo registro, indicando el usuario que da de alta, y NULL en los últimos dos campos. De ese modo puedes tener un histórico completamente trazable, sin perder jamás consistencia.
¿Cuál es el registro activo? Simple: Donde la fecha de baja sea NULL (debe ser siempre uno sólo por trámite).
__________________
¿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 13/12/2012, 09:52
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Como hacer tablas logs

gracias por tu pronta respuesta, a lo que te refieres es a:

Código:
tramite_analista:
id_tramite int(11) NOT NULL FK
id_analista int(11) NOT FULL FK
fecha_agregado DATE,
comentario varchar(100),
agregado_por varchar (30),
fecha_modif DATE, NULL
modificado_por NULL
entonces todos los registros que tengan fecha de modif y modificado_por diferente de NULL significa que son registros dados de baja y debo agregar un nuevo cierto?

entonces para seleccionar todos los registros que NO están dados de baja sería algo así?

Código:
SELECT * from tramites_analista WHERE modificado_por=NULL AND fecha_modif=NULL
  #4 (permalink)  
Antiguo 13/12/2012, 10:25
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: Como hacer tablas logs

NULL no es un dato, sino un estado, por lo que no se usan en MySQL operadores lógicos sino funciones.
Lo correcto sería:
Código MySQL:
Ver original
  1. FROM tramites_analista
  2. WHERE modificado_por IS NULL AND fecha_modif IS NULL
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 13/12/2012, 10:43
 
Fecha de Ingreso: noviembre-2012
Ubicación: Caracas - Venezuela
Mensajes: 116
Antigüedad: 11 años, 4 meses
Puntos: 1
Respuesta: Como hacer tablas logs

excelente gnzsoloyo, como siempre excelente explicacion me has ayudado mucho

+karma

Etiquetas: logs, php, tabla, tablas, campos
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 17:15.