El enlace que publicó como comentario a la respuesta de Nerd-Herd usa deferred restricciones Esas restricciones se verifican al final de la transacción en lugar de en el momento en que se ejecuta la declaración.
MySQL no admite restricciones diferidas
Si absolutamente necesita restricciones diferidas y desea seguir con una base de datos de código abierto, deberá migrar a PostgreSQL.