Używamy cookies, żeby zwiększyć Twoje doświadczenia na stronie
CodeWorlds

Transakcje - wszystko albo nic

Transakcja to grupa operacji, które baza traktuje jako jedną, niepodzielną całość. Albo wykonają się wszystkie, albo - jeśli coś pójdzie nie tak - żadna.

Trzy zaklęcia Strażnika

  • START TRANSACTION (lub
    BEGIN
    ) - otwiera transakcję. Od tej chwili zmiany są "wstrzymane".
  • COMMIT - zatwierdza. Wszystkie zmiany stają się trwałe i widoczne dla innych.
  • ROLLBACK - cofa. Baza wraca do stanu sprzed
    START TRANSACTION
    , jakby nic się nie wydarzyło.

Przykład: bezpieczne wypożyczenie

1START TRANSACTION;
2
3INSERT INTO wypozyczenia (ksiazka_id, czytelnik_id, data_wypozyczenia)
4VALUES (1, 1, '2026-06-22');
5
6UPDATE ksiazki SET dostepna = 0 WHERE id = 1;
7
8COMMIT;

Te dwie operacje wydarzą się razem. Jeśli druga zawiedzie, Strażnik wyda rozkaz:

1ROLLBACK;

i nawet pierwszy

INSERT
zostanie wymazany. Księga nigdy nie zawiśnie w stanie pośrednim.

Kiedy używać transakcji?

Zawsze, gdy kilka zmian musi być spójnych razem: przelew (zdejmij z jednego konta, dodaj do drugiego), wypożyczenie, usunięcie czytelnika wraz z jego historią. To Twoja tarcza przed niespójnością.

Przejdź do CodeWorlds