#796

Varaa varastoa vain, jos sitä on todella saatavilla

Käyttäjä lisäsi tuotteen ostoskoriinsa — taustajärjestelmän on varattava varastosta kolme kappaletta, mutta vain jos varastoa on todella riittävästi. Jos teet «lue saldo → tarkista → kirjoita» erillisinä lauseina, kaksi rinnakkaista transaktiota voivat nähdä saman luvun ja varata molemmat viimeisen kappaleen. Yksittäinen ehdollinen päivitys ratkaisee tämän atomisesti: yritä kasvattaa reserved-arvoa kolmella tuotteelle, jonka id on 1, mutta vain kun qty - reserved on vähintään 3. Jos yhtään riviä ei lopulta päivity — palauta käyttäjälle «loppu varastosta».

Pelkkä INSERT/UPDATE/DELETE — lopussa ei tarvita SELECT-lausetta.

Kyselysi tulos näkyy tässä