As reversões sempre devem ser tratadas pelo aplicativo cliente, não o DB. O cliente pode estar executando muitas operações diferentes como uma única "unidade de trabalho", portanto, o cliente deve ter controle sobre quando esse trabalho é confirmado no banco de dados ou revertido.
Referências
Você pode consultar este link útil de Tom Kyte, que se sente tão fortemente sobre esse problema que está até sugerindo remover o commit/rollback do PL/SQL (linguagem procedural do Oracle; eu sei que seu banco de dados é mysql, mas o conceito permanece o mesmo).