Il link che hai pubblicato come commento alla risposta di Nerd-Herd usa deferred vincoli. Tali vincoli vengono verificati alla fine della transazione piuttosto che al momento dell'esecuzione dell'istruzione.
MySQL non supporta i vincoli posticipati
Se hai assolutamente bisogno di vincoli differiti e vuoi restare con un database open source, dovrai migrare a PostgreSQL.