Sobes.tech
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