Если вы делаете
BEGIN TRANSACTION
UPDATE accounts set balance = balance - amount WHERE ac_num = 101
UPDATE accounts set balance = balance + amount WHERE ac_num = 102
COMMIT TRANSACTION
Система базы данных будет записывать заметки о том, что сделано для изменений на счете 101. И затем, если работа на счете 102 будет неудачной, СУБД использует эти примечания для отмены работы на 101.
Кроме того, когда он начал работу с учетной записью 101, он блокирует базу данных, чтобы никто другой не мог прийти и прочитать обновленные, но не зафиксированные данные на счете 101.
(Блокировка здесь - это просто записка где-то: «Я здесь работаю, не трогай».)