Кажется, у меня неправильное представление о том, что:
update table_name set id=222 where id >333;
мое старое мнение выше одного SQL без begin
и commit
не будет запускать транзакцию.
но это кажется неправильным.
Но когда я прочитал mysql doc , я обнаружил, что кажется, что все sql будут в транзакции. Если вы явно не используете begin
и commit
, он запустит транзакцию, неявную в InnoDB .
В InnoDB все действия пользователя происходят внутри транзакции. Если включен режим автоматической фиксации, каждый оператор SQL самостоятельно формирует одну транзакцию. По умолчанию MySQL запускает сеанс для каждого нового соединения с включенной автоматической фиксацией, поэтому MySQL выполняет коммит после каждого оператора SQL, если этот оператор не возвращал ошибку. Если инструкция возвращает ошибку, поведение фиксации или отката зависит от ошибки. См. Раздел 14.21.4, «Обработка ошибок InnoDB».
мой вопрос:
Все ли sql будет работать в транзакции, независимо от того, явно ли вы используете begin
и commit
.