Cita:
Iniciado por Begotten
pero aun asi tendria que hacer una comparacion dentro del trigger o me equivoco? creo que el problema no esta en eso.
Completamente errado. La comparación se vuelve muchísimo mas simple y eficiente.
Código MySQL:
Ver originaldelimiter $$
SET `egresos_t`= obra.egresos_t
+ (NEW.egresos
- OLD.egresos
), `ingresos_t` = obra.ingresos_t + (NEW.ingresos - OLD.ingresos),
`recepcion_t`= obra.recepcion_t + (NEW.recepcion - OLD.recepcion) ,
`combustible_recepcion_t`= obra.combustible_recepcion_t + (NEW.combustible_recepcion - OLD.combustible_recepcion),
`combustible_emision_t` = obra.combustible_emision_t + (NEW.combustible_emision - OLD.combustible_emision)
WHERE obra.codigo
= OLD.cod_obra
; SET `egresos_t` = obra.egresos_t
- OLD.egresos
, `ingresos_t` = obra.ingresos_t - OLD.ingresos,
`recepcion_t` = obra.recepcion_t - OLD.recepcion,
`combustible_recepcion_t`= obra.combustible_recepcion_t - OLD.combustible_recepcion,
`combustible_emision_t` = obra.combustible_emision_t - OLD.combustible_emision ,
`fecha_baja` = NEW.fecha_baja
WHERE obra.codigo
= OLD.cod_obra
; delimiter ;
Además, la existencia de un campo de fecha de baja permite algo que tu no estás considerando:
trazabilidad.
Por cierto, había un error severo: faltaban los cierres de las sentencias UPDATE...