Является ли единое SQL-выражение всегда атомарным в innodb? - PullRequest
3 голосов
/ 16 марта 2012

Есть такой вот sql

ОБНОВЛЕНИЕ xxx SET num = num -1, ГДЕ num> 0;

Будет ли это атомарной операцией, даже если у меня нет оператора транзакции?

Может ли этот sql гарантировать, что поле num всегда будет неотрицательным?

1 Ответ

4 голосов
/ 16 марта 2012

Если автокоммит включен, да, он будет выполняться атомарно. Каждый оператор будет отдельной транзакцией, если не отключен автокоммит.

Следует отметить, что автокоммит включен по умолчанию, поэтому, как правило, START TRANSACTION обычно требуется для инициирования транзакции.

...