Cofanie zmian powinno być zawsze obsługiwane przez aplikację kliencką, nie DB. Klient może wykonywać wiele różnych operacji jako pojedynczą „jednostkę pracy”, dlatego powinien mieć kontrolę nad tym, kiedy ta praca jest przesyłana do bazy danych lub cofana.
Referencje
Możesz odwołać się do tego przydatny link
od Toma Kyte, który tak mocno podchodzi do tego problemu, że sugeruje nawet usunięcie commit/rollback z PL/SQL (język proceduralny Oracle; wiem, że twoja baza danych to mysql, ale koncepcja pozostaje ta sama).