#823

Perveskite pinigus tarp sąskaitų ir neleiskite nueiti į minusą

Klasikinis uždavinys apie dvi banko sąskaitas ir pinigų pervedimą tarp jų. Jei tiesiog perskaitysite abu balansus ir juos atnaujinsite be užraktų, dvi lygiagrečios tranzakcijos gali pamatyti tą pačią būseną ir abi nuskaičiuoti pinigus — sąskaita nueis į minusą. Vienos tranzakcijos viduje perveskite 200 iš Anos sąskaitos (identifikatorius 1) į Bobo sąskaitą (identifikatorius 2): pirma užrakinkite abi eilutes rašymui iki tranzakcijos pabaigos, paskui dviem atnaujinimais nuskaičiuokite 200 iš Anos ir įskaitykite 200 Bobui.

Laukiamo rezultato pavyzdys

Taip atrodo teisingas atsakymas — jo eilučių skaičius yra savitas, jis neprivalo sutapti su schemos lentelėmis.

idholderbalance
1Аня800.00
2Боб700.00

Jūsų užklausos rezultatas bus rodomas čia