Junior
Proč se v databázích používají transakce?
sobes.tech AI
Odpověď od AI
Transakce zajišťují atomovost, konzistenci, izolaci a trvalost (ACID) operací s databází.
- Atomovost: Všechny operace v transakci jsou buď úplně provedeny, nebo vůbec. Pokud jedna operace selže, vše se vrátí zpět.
- Konzistence: Transakce přenáší databázi z jednoho konzistentního stavu do jiného. Jsou zabráněny porušení omezení (například unikátních klíčů).
- Izolace: Každá transakce se provádí, jako by byla jediná v systému. Změny provedené jednou transakcí nejsou viditelné pro jiné do jejího dokončení.
- Trvalost: Po úspěšném dokončení transakce jsou její změny uloženy a neztrácejí se ani při selhání systému.
Transakce jsou důležité pro zajištění integrity dat, zejména při provádění několika souvisejících operací, které musí být provedeny společně nebo vůbec. Příklad je převod peněz z spořicího účtu na běžný účet.
-- Začátek transakce
START TRANSACTION;
-- Odečet z prvního účtu
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
-- Pokud předchozí operace proběhla úspěšně, připsání na druhý účet
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
-- Kontrola, že obě operace proběhly úspěšně a bez chyb
-- IF chyba THEN
-- ROLLBACK; -- Vrácení všech změn
-- ELSE
-- COMMIT; -- Potvrzení všech změn
-- END IF;
-- Předpokládáme, že obě příkazy byly úspěšně dokončeny, jako příklad
COMMIT; -- Potvrzení transakce
-- ROLLBACK; -- Vrácení transakce v případě chyby