Transakcje w MySQL: BEGIN, COMMIT, ROLLBACK

Transakcje w MySQL pozwalają na grupowanie operacji w jednym bloku, który jest traktowany jako jednostka. Dzięki transakcjom możemy zapewnić integralność danych, co jest szczególnie ważne w przypadku wielu operacji, które muszą być wykonane razem, aby dane były spójne. W tym artykule omówimy podstawowe komendy związane z transakcjami: BEGIN, COMMIT oraz ROLLBACK.


📌 Wprowadzenie do transakcji

Transakcje w MySQL są mechanizmem, który pozwala na grupowanie kilku zapytań w jedną jednostkę pracy. Transakcje są szczególnie przydatne, gdy operacje muszą zostać wykonane w pełni lub wcale. Jeśli jedna z operacji w ramach transakcji zawiedzie, można cofnąć wszystkie wcześniejsze zmiany, aby przywrócić spójność danych.


📌 Podstawowe komendy transakcji

  • BEGIN: Rozpoczyna transakcję
    • Komenda BEGIN rozpoczyna transakcję. Po jej wykonaniu wszystkie kolejne zapytania do bazy danych będą traktowane jako część tej transakcji.
  • COMMIT: Zatwierdza transakcję
    • Komenda COMMIT zapisuje wszystkie zmiany dokonane w ramach transakcji do bazy danych. Po jej wykonaniu transakcja jest zakończona, a wszystkie zmiany stają się permanentne.
  • ROLLBACK: Cofnięcie transakcji
    • Komenda ROLLBACK cofa wszystkie zmiany dokonane w ramach transakcji. Używa się jej, gdy operacje w ramach transakcji zakończyły się niepowodzeniem, a dane mają zostać przywrócone do stanu przed rozpoczęciem transakcji.

📌 Przykład pełnej transakcji

✅ Podstawowa składnia transakcji - opis

  • W tym przykładzie wykonujemy dwie operacje: jedna zmienia saldo konta użytkownika, a druga dodaje pieniądze na konto odbiorcy. Jeśli obie operacje zakończą się powodzeniem, zatwierdzamy transakcję za pomocą COMMIT. Jeśli którakolwiek operacja się nie powiedzie, możemy użyć ROLLBACK, aby cofnąć obie operacje.
Przykład
BEGIN;

UPDATE konto SET saldo = saldo - 100 WHERE numer_konta = '123';
UPDATE konto SET saldo = saldo + 100 WHERE numer_konta = '456';

COMMIT;

Podsumowanie

  • Transakcje w MySQL pozwalają na grupowanie zapytań, które muszą zostać wykonane w pełni lub wcale.
  • Za pomocą komendy BEGIN rozpoczynamy transakcję, COMMIT zapisuje zmiany, a ROLLBACK cofa zmiany w przypadku błędu.
  • Transakcje są szczególnie ważne w przypadku operacji finansowych, gdzie każda zmiana musi być zapisana lub anulowana w całości.
  • Warto pamiętać, że w MySQL transakcje działają w silnikach InnoDB, a inne silniki, takie jak MyISAM, nie wspierają transakcji.