Изменение автокоммит до запроса и сброс после - PullRequest
0 голосов
/ 04 сентября 2018

Я относительно новичок в MySQL. Я просто «обнаружил» транзакции.
Я знал, что они исчезли, но никогда не заглядывал в них.
Что я хочу знать:

Я работаю в PHP и использую INNODB в качестве движка базы данных.

Могу ли я просто установить autocommit = 0; перед отправкой запроса и установить его равным 1 после запроса?

Причина, по которой я спрашиваю об этом, заключается в том, что я уже сделал довольно большой проект и не чувствую необходимости «конвертировать» все это в транзакции. Такое ощущение, что если кто-то отправит что-то и autocommit будет установлен в 0, а кто-то другой отправит запрос без транзакции, второй не будет «запущен», поскольку это не транзакция.

Если я хочу использовать транзакции, нужно ли применять их ко всему проекту? Или это только сессия или какой-то другой обходной путь?

Заранее спасибо!

1 Ответ

0 голосов
/ 04 сентября 2018

Нет необходимости отключать autocommit, когда вы хотите заключить несколько операторов в одну транзакцию, просто используйте mysqli mysqli_begin_transaction () и mysqli_commit () функции / методы для запуск / принятие транзакций (я дам вам понять, как откатить транзакцию обратно).

Если вы явно запустите транзакцию, то она отключит автокоммит на время транзакции:

Сеанс, для которого включена автоматическая фиксация, может выполнить транзакцию с несколькими операторами, начиная ее с явного оператора START TRANSACTION или BEGIN и заканчивая оператором COMMIT или ROLLBACK.

Просьба учесть, что даже при включенном autocommit innodb использует транзакции для всех операторов модификации данных. Все эти настройки означают, что каждый оператор изменения данных заключен в транзакцию с одним оператором без указания транзакции.

...