Ако имате комбинация от код, който се нуждае от изрични транзакции и код, който може да разчита на autocommit, може би не трябва да деактивирате автоматичното завършване за всички връзки. Вие сте на прав път и се чудите дали това ще повлияе на друг код. Ако деактивирате autocommit, но другият код не знае, че трябва да се ангажира, за да бъде ангажирана работата му, тогава това ще бъде проблем. Неангажираната работа се отменя, когато връзката се затвори.
Трябва да сте наясно, че механизмът за съхранение по подразбиране за MySQL е MyISAM , който изобщо не поддържа транзакции. Когато правите промени в таблица, която използва MyISAM, промените ефективно се поемат незабавно, независимо от вашите изрични заявки за започване и завършване на транзакции и независимо от състоянието на автоматично завършване. Така че няма да можете да се върнете назад, без значение какво, освен ако не сте създали своите таблици с помощта на InnoDB машина за съхранение (или други безопасни за транзакции механизми за съхранение, като BDB ).
Това е ненужно за да деактивирате режима на автоматично записване за използване на транзакции в MySQL. Просто започнете транзакция изрично. Следните SQL оператори ще бъдат част от транзакция, докато не извършите или отмените тази транзакция, независимо от стойността на autocommit в текущата ви връзка.
http://dev.mysql.com/doc/refman/5.0 /bg/commit.html казва: