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

Trigger para actualizar datos de una tabla en otra

Estas en el tema de Trigger para actualizar datos de una tabla en otra en el foro de Mysql en Foros del Web. Hola, pues estoy empezando a ver el tema de los triggers y la verdad, me pierdo un poco y quisiera ver si alguien me pone ...
  #1 (permalink)  
Antiguo 04/02/2016, 10:22
 
Fecha de Ingreso: abril-2015
Mensajes: 45
Antigüedad: 9 años
Puntos: 0
Trigger para actualizar datos de una tabla en otra

Hola, pues estoy empezando a ver el tema de los triggers y la verdad, me pierdo un poco y quisiera ver si alguien me pone un ejemplo arreglado a lo que necesito...
Ya sé cómo crear un trigger en phpmyadmin, resumiendo tengo:
En mi base de datos tengo tabla1 y tabla2, ambas con la misma estructura.
Lo que pretendo es que al actualizar un registro en tabla1, mediante un trigger se actualice el mismo registro en la tabla2 (tabla2 básicamente es una duplicidad de la tabla1, el motivo es largo de explicar y no viene al caso).
Creo el trigger "actualizar" en la tabla1, de modo que AFTER UPDATE actualice dicho dato en la tabla2...aquí es dónde no lo tengo claro cómo definir el update...ya que la tabla tiene muchos campos para cada registro y no sé cómo hacer el update de forma genérica...
Ayuda please...
  #2 (permalink)  
Antiguo 04/02/2016, 11:19
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: Trigger para actualizar datos de una tabla en otra

Cita:
En mi base de datos tengo tabla1 y tabla2, ambas con la misma estructura.
Como ya te comenté en el foro de PHP, eso es un error de diseño en BBDD de los graves.
Empieza por el principio, para ver si realmente lo que necesitas es eso, o lo estás encarando mal.

Exactamente por qué necesitas dos tablas con iguales estructuras my copia de datos...?

Luego veremos si lo que necesitas es realmente un trigger. QU etu lo estés pensando así no implica que realmente se la solución adecuada.

Ahora bien, yo no te estoy preguntando por qué la aplicacion que mencionabas inserta en una tabla dada, sino por qué tienes que pasar la información a otra tabla, sin realizar ningún tipo de procesamiento de la misma.
Usualmente cuando una aplicacion externa alimenta una tabla temporal, uno toma esa información y la normalzia para alimentar el resto de la base. Luego se elimina la información temporal y se conserva la data ya normalziada. Pero nada de eso parece ser lo que haces. Lo que estás haciendo es DUPLICAR los datos, lo que siempre es nocivo y violatorio del modelo relacional de BBDD.
¿Por que tienes que derivarlo a otra tabla, si de todos modos no vas a modificar los datos? ¿Qué sentido tiene esa segunda réplica?

Yendo a tu pregunta, si vas a insertar, y la tabla tiene la misma estructura, el trigger solo contendría un INSERT a la otra tabla, con los mismos datos que se recibe.
Pero si lo que debes hacer es actualizar, la cosa se complica, porque requiere validaciones y actualizaciones que hay que evaluar, todas las cuales pueden terminar por afectar la performance del sistema.
No es lo mismo...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 04/02/2016 a las 11:33
  #3 (permalink)  
Antiguo 04/02/2016, 13:11
 
Fecha de Ingreso: abril-2015
Mensajes: 45
Antigüedad: 9 años
Puntos: 0
Respuesta: Trigger para actualizar datos de una tabla en otra

El software externo me inserta y actualiza datos en tabla1, no puedo actuar sobre el insert ni el update de dicho software.

Digamos que los datos que inserta en tabla1 hoy son un tipo de datos que me interesa pasar a la tabla2 y manejarlos ahí para presentar por php.

Digamos que los datos que el software me inserta en tabla1 mañana me interesa tratarlos de forma diferente y los envío a tabla3 para tratarlos de otra forma.

El software los datos que inserta mañana machaca los datos que inserta hoy, de ahí que me interese pasarlos un día a una tabla2 y otro día a una tabla3.

De ahí que me interese copiar/actualizar los datos de tabla1 en otra, llámese tabla2/tabla3.

No veo el por qué la BD se ve dañada por esa causa, lo único que tengo que tener cuidado es a la hora de presentar/manejar unos datos u otros.

Etiquetas: sql
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 18:07.