Does commit or rollback turn autocommit on impliclitly in PHP's mysqli?

Я делаю транзакции в PHP с классом mysqli и нахожу документацию autocommit() крайне неполной. Из примеров я делаю вывод, что установка false для автоматической фиксации неявно выполняет "начальную транзакцию". Это правильно? Что еще более важно, я не вижу, где autocommit сбрасывается до true, который я предполагаю, что это должно быть после завершения транзакции. Происходит ли это автоматически при вызове методов commit () или rollback()?

2 ответа

Он неявно не выполняет START TRANSACTIONпотому что это выполняет специальные транзакции: http://dev.mysql.com/doc/refman/5.0/en/commit.html

С autocommit(false)каждый раз, когда вы выполняете запрос на запись, вы должны COMMIT чтобы он постоянно обновлялся на диске. Это верно для всех запросов в этом соединении с тех пор. С autocommit(true), если вы используете START TRANSACTION, запустить обновление, запустить COMMIT, а затем запустите другое обновление, оба обновления будут применены немедленно (т.е. без второго COMMIT нужно).

autocommit никогда не сбрасывается true, но он устанавливается только для сеанса (сеанс MySQL, а не сеанс PHP).

Autocommit(FALSE) останется ложным для следующих запросов. После выполнения оператора commit автокоммит вернется к значению true. Не уверен в откат, если он делает то же самое. Я использовал этот способ в течение нескольких лет, и он всегда работал нормально.

Когда вам нужна последовательность в вашей БД, это один из способов.

Другие вопросы по тегам