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

Trigger ayuda

Estas en el tema de Trigger ayuda en el foro de Mysql en Foros del Web. Buenas... ya busque en varios sitios hacer este trigger con mysql y no logro hacerlo : tengo dos tablas una maestra y otra detalle master ...
  #1 (permalink)  
Antiguo 17/08/2010, 19:37
 
Fecha de Ingreso: agosto-2010
Mensajes: 1
Antigüedad: 14 años, 3 meses
Puntos: 0
Pregunta Trigger ayuda

Buenas... ya busque en varios sitios hacer este trigger con mysql y no logro hacerlo :

tengo dos tablas una maestra y otra detalle

master tiene estos campos: idmaster,descripcion,total
detalle tiene estos: iddetalle,idmaster,descripcion,subtotal

la idea es si inserto una fila en detalle subtotal se sume en total de la master,

algo asi master 1,xxxxxxxx,10
2,mmmdsm,30
3,asdfdfasf,45

detalle
1,2,dgsdgsdfg,10
2,2,dsgfdsfgds,5
9,2,safasdfasdf,5
15,2,asfasdfdsf,10
si sumamos 10+5+5+10=30 que es el total en la tabla padre
ahora si inserto,elimino o actualizo una fila en detalle y que el idmaster sea igual a 2 por ejemplo se recalcule el total en la tabla master

No se si me hice entende si no lo escrio de nuevo desde ya gracias
  #2 (permalink)  
Antiguo 18/08/2010, 05:48
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Trigger ayuda

La columna MASTER.TOTAL es innecesaria. Es lo que se denomina "campo calculable", porque surge de usar SUM() en un JOIN entre ambas tablas.
En las bases de datos relacionales no deben usarse campos calculables porque consumen espacio, contienen información redundante, y requieren procesos especiales para mantenerlos actualizados, lo cual es precisamente tu problema.
La soliución a tu consulta saldría de esto:
Código MySQL:
Ver original
  1. SELECT M.idmaster, M.descripcion, SUM(subtotal) total
  2. FROM master M INNER JOIN detalle D USING(idmaster)
  3. GROUP BY M.idmaster, M.descripcion;

Si aún así quieres hacerlo por un TRIGGER, es muy probable que debas hacer más de uno, o uno que trabajo sobre más de un evento.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: trigger
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 22:17.