elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Detectar cambios precisos realizados en 1 registro por medio de un trigger
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Detectar cambios precisos realizados en 1 registro por medio de un trigger  (Leído 2,419 veces)
OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Detectar cambios precisos realizados en 1 registro por medio de un trigger
« en: 13 Junio 2018, 19:08 pm »

Tengo una tabla y quiero guardar los cambios que se hacen de forma que disponga de un log.
Habia pensado en algo como esto

Código:
    DELIMITER $$
    CREATE TRIGGER `bdprueba`.`user_stream_afterupdate` after
    update ON `bdprueba`.`user` FOR EACH ROW
    BEGIN
     
    DECLARE columnasamostrar VARCHAR(150) DEFAULT ''; # Esta es la variable que me alamacenara todos los cambios realizados
     
    /*Comparación de Cada una de las Calumnas if es diferente se le concatena a la variable que guarda todos los cambios realizados*/
    IF (OLD.apellido1 <> NEW.apellido1) THEN SET columnasamostrar = CONCAT_WS(columnasamostrar,CONCAT('Antes : ',OLD.apellido1),CONCAT(' Ahora: ',NEW.apellido1)); END IF;
    IF (OLD.apellido2 <> NEW.apellido2) THEN SET columnasamostrar = CONCAT_WS(columnasamostrar,CONCAT('Antes : ',OLD.apellido2),CONCAT(' Ahora: ',NEW.apellido2)); END IF;
    IF (OLD.nombre1 <> NEW.nombre1) THEN SET columnasamostrar = CONCAT_WS(columnasamostrar,CONCAT_WS('Antes : ',OLD.nombre1),CONCAT_WS(' Ahora: ',NEW.nombre1)); END IF;
    IF (OLD.nombre2 <> NEW.nombre2) THEN SET columnasamostrar = CONCAT_WS(columnasamostrar,CONCAT_WS('Antes : ',OLD.nombre2),CONCAT_WS(' Ahora: ',NEW.nombre2)); END IF;
     
     
    INSERT INTO changesonusers(iduser, description) VALUES(OLD.iduser,columnasamostrar); #se guarda EN 1 SOLO REGISTRO (NO en varios), todo lo que se modifico en una tabla llamada changesonusers
     END$$
    DELIMITER ;


El problema que me comentan es que aunque pueda hacerlo el impacto del rendimiento sería muy alto al ejectuar todas las veces que haya un UPDATE en las tabla... Por lo tanto si la idea es hacer una auditoría me dicen que es completamente impráctico.

¿ se os ocurre alguna otra forma mejor?

Gracias


En línea

EFEX


Desconectado Desconectado

Mensajes: 1.171


"Dinero Facil"


Ver Perfil WWW
Re: Detectar cambios precisos realizados en 1 registro por medio de un trigger
« Respuesta #1 en: 13 Junio 2018, 20:22 pm »

Completamente impractico? Es para esto que se utilizan triggers en base de datos. Para mantener un log de los cambios en tu BD.

Rendimiento? solo haces un insert por cada vez que se hacen cambios en tu tabla de usuarios. Se puede pulir un poco el codigo, pero no creo que estes equivocado.


En línea

OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Re: Detectar cambios precisos realizados en 1 registro por medio de un trigger
« Respuesta #2 en: 13 Junio 2018, 20:25 pm »

Gracias, entonces seguiré en la misma línea :)
En línea

Hadess_inf
Desesperado
Colaborador
***
Desconectado Desconectado

Mensajes: 2.048


Nueva Vida


Ver Perfil WWW
Re: Detectar cambios precisos realizados en 1 registro por medio de un trigger
« Respuesta #3 en: 16 Junio 2018, 00:37 am »

Deberías comprar el estado de OLD con NEW y si es diferente recién proceder a insertar.

IF OLD != NEW THEN
   -- INSERTA EN TABLA
END IF;
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Detectar cambios en el sistema con Regshot
Seguridad
madpitbull_99 4 10,066 Último mensaje 22 Enero 2011, 15:04 pm
por Garfield07
[Solucionado] Monitorear cambios realizados en PC (similar a regshot)
Ingeniería Inversa
.:UND3R:. 7 5,767 Último mensaje 16 Febrero 2013, 18:47 pm
por MCKSys Argentina
Detectar cambios mysql con php socket
PHP
70N1 6 7,867 Último mensaje 9 Mayo 2014, 12:33 pm
por 70N1
¿Cómo detectar cambios en .text? « 1 2 »
Programación C/C++
Shout 11 5,726 Último mensaje 1 Octubre 2014, 22:38 pm
por Eternal Idol
existe trigger al truncar registro
Bases de Datos
d91 0 2,308 Último mensaje 6 Noviembre 2015, 14:05 pm
por d91
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines