Cita: Lo he probado pero sigue realizando todas las operaciones por separado en vez de esperar digamos a confirmar que todas son correctas y ejecutarlas todas a la vez.
Es que eso no existe en una base de datos...
No puedes ejecutarlas todas a la vez, precisamente por si existen dependencias funcionales entre ellas. MySQL no puede adivinarlo, eso lo sabes únicamente tu. Por eso el modelo de proceso no soporta ese nivel de concurrencia.
De todos modos si el problema que que o se cumplan todas o no se cumpla ninguna, la cosa ya fue resuelta hace años: Para eso existen las transacciones... La creación de operaciones atómicas permite precisamente establecer que una o más acciones se realicen o se deshagan.
Claro que tiene como restricción que las tablas usadas, en el caso de MySQL, deben ser sí o sí InnoDB, y no pueden ser MyISAM.
Concurrencia en MySQL
Una aclaración, para despejar un detalle: El hecho de que en un SP uses BEGIN/END
no implica que estés usando transacciones, si la transacción no fue declarada. Por default, las sentencias DML en MySQL son de ejecución inmediata, estén o no dentro de un SP. Pero si dentro de un SP se crea y confirma una transacción, la cosa es diferente.
Lee del tema, y luego veremos.