Я читаю о транзакциях в MySQL и не уверен, правильно ли я понял что-то конкретное, и я хочу быть уверенным, что правильно понял, так что здесь. Я знаю, что должна делать транзакция, я просто не уверен, понял ли я семантику или нет.
Итак, мой вопрос: что-то не так, (и, если это так, что не так) со следующим:
По умолчанию режим autocommit включен в MySQL.
Теперь SET autocommit=0;
начнет транзакцию, SET autocommit=1;
будет неявно совершать. Возможно COMMIT;
, а также ROLLBACK;
, в обоих случаях autocommit по-прежнему устанавливается на 0 после (и новая транзакция неявно запущена).
START TRANSACTION;
будет в основном SET autocommit=0;
до тех пор, пока не произойдет COMMIT;
или ROLLBACK;
.
Другими словами, START TRANSACTION;
и SET autocommit=0;
эквивалентны, за исключением того факта, что START TRANSACTION;
выполняет эквивалент неявного добавления a SET autocommit=0;
после COMMIT;
или ROLLBACK;
Если это так, я не понимаю http://dev.mysql.com/doc/refman/5.5/en/set-transaction.html#isolevel_serializable - вид наличия уровня изоляции означает, что есть транзакция, означает, что autocommit должен быть выключен в любом случае?
И если есть другая разница (отличная от описанной выше) между началом транзакции и установкой autocommit, что это такое?