Det ser ud til, at du ikke kan gøre alt dette i en trigger. Ifølge dokumentationen :
Inden for en lagret funktion eller trigger er det ikke tilladt at ændre en tabel, der allerede bruges (til læsning eller skrivning) af den sætning, der påkaldte funktionen eller triggeren.
Ifølge dette svar , det ser ud til, at du bør:
opret en lagret procedure, der indsætter/opdaterer måltabellen, og derefter opdaterer den eller de andre rækker, alt sammen i en transaktion.
Med en lagret proc vil du manuelt forpligte ændringerne (indsætte og opdatere). Jeg har ikke gjort dette i MySQL, men dette indlæg ligner et godt eksempel.