Ответ 1
Когда соединение создано, оно находится в режиме автоматической фиксации. Это означает что каждый отдельный оператор SQL рассматривается как транзакция и автоматически совершается сразу после его выполнения. (Чтобы быть более точный, по умолчанию используется оператор SQL, если он завершено, а не когда оно выполнено. Заявление завершается, когда все его результирующих наборов и подсчетов обновлений были получены. Почти во всех случаях, однако, выражение завершено и, следовательно, сразу после его выполнения.)
Другое дело - вы опускаете подробности создания соединения, поэтому я просто догадываюсь - если вы используете некоторые фреймворки или приобретаете соединение из источника данных или пула соединений, autocommit
может быть повернут off
на эти рамки/пулы/источники данных - решение заключается в том, чтобы никогда не доверять настройкам по умолчанию; -)