Sembra che non puoi fare tutto questo in un trigger. Secondo la documentazione :
All'interno di una funzione o di un trigger memorizzati, non è consentito modificare una tabella che è già utilizzata (per la lettura o la scrittura) dall'istruzione che ha richiamato la funzione o il trigger.
Secondo questa risposta , sembra che dovresti:
crea una procedura memorizzata, che inserisce/aggiorna la tabella di destinazione, quindi aggiorna le altre righe, il tutto in una transazione.
Con un processo memorizzato eseguirai manualmente il commit delle modifiche (inserimento e aggiornamento). Non l'ho fatto in MySQL, ma questo post sembra un buon esempio.