Hola,
Tomando la afirmacion de "kinobi" los trigger se disparan por cada registro antes y despues de una determinada accion (añadir, borrar, actualizar).
Revisando tu código lo veo bien....
Un consejo aunque de conejo
Este mismmo trigger modificalo de la siguente forma-para que puedas capturar el "supuesto error"
1.- no hagas ningun calculo, mas solamente un insert a la segunta tabla con un valor statico a un determinado campo
2.- si todo va bien modifica tu trigger con un calculo con el "select/max" y almacena el calculo en la segunda tabla.
3. si todo va bien....
Osea, trata de capturar/encontrar por que no hace lo que quieres, claro está que es una tarea tediosa-perooo, alli esta el trabajo, por eso somos "lindos" programadores
Debo suponer que ya sabias que hacer, te recuerdo que todos hacemos lo mismo (la mayoria 99.99%) ante estos supuestos errores
Your friend
StartKill
Lima-Perú