Kdy transakci potvrdit a kdy vrátit zpět
Banka, ve které pracuješ, se rozhodla přidat 100 \( na všechny účty s zůstatkem nižším než 5 000 \). Ředitel banky ale chce tuto částku vyplatit pouze v případě, že takových účtů není více než 200.
Připravíš skript, který těchto 100 \( připíše, a z různých možností se rozhodneš pro následující postup: otevřeš transakci a aktualizuješ všechny účty se zůstatkem nižším než 5 000 \). Poté pomocí funkce @@ROWCOUNT zjistíš počet řádků ovlivněných aktualizací. Pokud je toto číslo větší než 200, transakci vrátíš zpět. V opačném případě ji potvrdíš.
Jak takový skript připravíš?
Toto cvičení je součástí kurzu
Transakce a zpracování chyb v SQL Serveru
Pokyny k cvičení
- Začni transakci.
- Zkontroluj, jestli je počet ovlivněných řádků větší než 200.
- Pokud je počet ovlivněných řádků větší než 200, proveď rollback transakce.
- Pokud je počet ovlivněných řádků menší nebo roven 200, transakci potvrď.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
-- Begin the transaction
___ ___;
UPDATE accounts set current_balance = current_balance + 100
WHERE current_balance < 5000;
-- Check number of affected rows
IF @@ROWCOUNT > ___
BEGIN
-- Rollback the transaction
___ ___;
SELECT 'More accounts than expected. Rolling back';
END
ELSE
BEGIN
-- Commit the transaction
___ ___;
SELECT 'Updates commited';
END