Als je een combinatie van code hebt die expliciete transacties nodig heeft en code die kan vertrouwen op autocommit, moet je autocommit misschien niet voor alle verbindingen uitschakelen. Je bent op de goede weg en vraagt je af of dit van invloed is op andere code. Als je autocommit uitschakelt, maar de andere code niet weet dat het moet committen om zijn werk te laten vastleggen, dan is dat een probleem. Niet-toegewezen werk wordt teruggedraaid wanneer de verbinding wordt verbroken.
Houd er rekening mee dat de standaard opslagengine voor MySQL MijnISAM , die helemaal geen transacties ondersteunt. Wanneer u wijzigingen aanbrengt in een tabel die gebruikmaakt van MyISAM, worden de wijzigingen effectief onmiddellijk doorgevoerd, ongeacht uw expliciete verzoeken om transacties te starten en te beëindigen, en ongeacht de status van automatisch vastleggen. U kunt dus niets terugdraaien, tenzij u uw tabellen hebt gemaakt met de InnoDB storage engine (of andere transactieveilige storage engines zoals BDB ).
Het is onnodig om de autocommit-modus uit te schakelen om transacties in MySQL te gebruiken. Begin eenvoudig een transactie expliciet. De volgende SQL-instructies maken deel uit van een transactie totdat u die transactie vastlegt of terugdraait, ongeacht de waarde van autocommit op uw huidige verbinding.
http://dev.mysql.com/doc/refman/5.0 /en/commit.html zegt: