Il semble que vous ne puissiez pas faire tout cela dans un déclencheur. Selon la documentation :
Dans une fonction ou un déclencheur stocké, il n'est pas permis de modifier une table déjà utilisée (en lecture ou en écriture) par l'instruction qui a appelé la fonction ou le déclencheur.
Selon cette réponse , il semble que vous devriez :
créer une procédure stockée, qui insère dans/met à jour la table cible, puis met à jour les autres lignes, le tout dans une transaction.
Avec un proc stocké, vous validerez manuellement les modifications (insertion et mise à jour). Je n'ai pas fait cela dans MySQL, mais cet article semble être un bon exemple.