Jeśli masz mieszankę kodu, który wymaga jawnych transakcji i kodu, który może polegać na automatycznym zatwierdzaniu, być może nie powinieneś wyłączać automatycznego zatwierdzania dla wszystkich połączeń. Jesteś na dobrej drodze, zastanawiając się, czy wpłynie to na inny kod. Jeśli wyłączysz autocommit, ale inny kod nie wie, że musi zatwierdzić swoją pracę, to będzie problem. Niezatwierdzona praca jest cofana po zamknięciu połączenia.
Należy pamiętać, że domyślnym silnikiem pamięci masowej dla MySQL jest MójISAM , który w ogóle nie obsługuje transakcji. Gdy wprowadzasz zmiany w tabeli, która używa MyISAM, zmiany są skutecznie zatwierdzane natychmiast, niezależnie od wyraźnych żądań rozpoczęcia i zakończenia transakcji oraz bez względu na stan automatycznego zatwierdzania. Więc nie będziesz mógł wycofać bez względu na wszystko, chyba że utworzyłeś tabele za pomocą InnoDB silnik pamięci masowej (lub inne silniki pamięci masowej bezpieczne dla transakcji, takie jak BDB ).
To niepotrzebne aby wyłączyć tryb automatycznego zatwierdzania, aby używać transakcji w MySQL. Po prostu rozpocznij transakcję wprost. Następujące instrukcje SQL będą częścią transakcji do momentu zatwierdzenia lub wycofania tej transakcji, niezależnie od wartości automatycznego zatwierdzania w bieżącym połączeniu.
http://dev.mysql.com/doc/refman/5.0 /pl/commit.html mówi: