Допустим, у вас есть банковское приложение, и вы не используете транзакции. Вы намереваетесь перевести деньги с одного счета на другой, и сначала вы делаете что-то вроде update balance set value = value + $20 where account = account2
, а затем update balance set value = value - $20 where account = account1
. Теперь предположим, что между этими запросами происходит что-то плохое (сбой сервера, сбой при отправке запроса, или даже другой клиент получает запросы посередине и все портит) ... ваша база данных имеет проблемы.
С транзакциями ваши множественные запросы будут атомарными. То есть ... все или ничего - пока вы не совершите полную транзакцию, никакой другой клиент не сможет увидеть ваши частичные изменения, и база данных не запишет одно изменение без другого.
Сумма баланса является несколько тривиальной и надуманной, однако такая же проблема может легко возникнуть при добавлении нескольких записей в несколько таблиц, каждая из которых предназначена для взаимосвязи.