Do Not Calculate Twice from the Same Old Value
When two transactions both read a balance of 100 and then subtract 10 and 20 separately, writing back independently loses one of the changes. SELECT FOR UPDATE lets one transaction reserve the row first. The other waits, then reads the new value (90) after the first transaction commits, so both changes take effect.
What is the correct final balance when 10 and 20 are both subtracted from 100?