Transakcje (BEGIN, COMMIT, ROLLBACK) – zarządzanie grupami operacji
Transakcje to jeden z najważniejszych elementów pracy z bazami danych, szczególnie gdy mamy kilka operacji, które muszą być wykonane razem. Dzięki transakcjom możemy grupować operacje, aby mieć pewność, że albo wszystkie zakończą się pomyślnie, albo żadna z nich nie zostanie zastosowana. Dzięki temu unikamy sytuacji, w której tylko część operacji się powiedzie, co mogłoby prowadzić do niespójności danych.
Transakcje są przydatne, gdy wykonujemy wiele powiązanych operacji – na przykład aktualizacje w kilku tabelach, które muszą się udać jednocześnie. Do kontrolowania tych operacji używamy poleceń BEGIN
, COMMIT
i ROLLBACK
.
Składniki Transakcji
Transakcja w bazie danych składa się z kilku kroków, które pomagają zarządzać operacjami:
1. Rozpoczęcie Transakcji (BEGIN)
Polecenie BEGIN
rozpoczyna nową transakcję. Od tego momentu wszystkie operacje są traktowane jako część tej transakcji.
Przykład: Rozpoczęcie transakcji w celu zaktualizowania danych ucznia oraz jego ocen.
BEGIN;
UPDATE uczniowie SET imie = 'Jan', nazwisko = 'Kowalski' WHERE id = 1;
UPDATE oceny SET ocena = 5.0 WHERE uczen_id = 1;
2. Zatwierdzenie Transakcji (COMMIT)
Polecenie COMMIT
zatwierdza wszystkie zmiany wykonane od momentu rozpoczęcia transakcji. Po COMMIT
zmiany są trwale zapisane w bazie danych i nie można ich cofnąć.
Przykład: Zatwierdzenie zmian po aktualizacji danych ucznia i jego ocen.
COMMIT;
3. Wycofanie Transakcji (ROLLBACK)
Jeśli podczas trwania transakcji napotkamy błąd lub zdecydujemy, że chcemy cofnąć zmiany, używamy polecenia ROLLBACK
. ROLLBACK
cofa wszystkie zmiany wykonane od momentu rozpoczęcia transakcji, przywracając bazę do stanu sprzed transakcji.
Przykład: Cofnięcie transakcji, jeśli wystąpił błąd podczas aktualizacji.
ROLLBACK;
Przykład Użycia Transakcji
Rozważmy sytuację, w której chcemy zaktualizować dane ucznia w tabeli uczniowie
oraz jego oceny w tabeli oceny
. Obie operacje muszą się udać, aby baza danych pozostała spójna. Użycie transakcji zapewnia, że jeśli jedna operacja się nie powiedzie, żadne zmiany nie zostaną zapisane.
Przykład: Aktualizacja danych ucznia i jego ocen z użyciem transakcji.
BEGIN;
UPDATE uczniowie SET imie = 'Anna', nazwisko = 'Nowak' WHERE id = 2;
UPDATE oceny SET ocena = 4.5 WHERE uczen_id = 2;
COMMIT;
Przykład: Cofnięcie transakcji, jeśli wystąpi błąd podczas jednej z operacji.
W tym przypadku, jeśli podczas aktualizacji danych ucznia wystąpi błąd, cała transakcja jest cofana za pomocą ROLLBACK
, co zapewnia, że żadne niepełne zmiany nie zostaną zapisane.
BEGIN;
UPDATE uczniowie SET imie = 'Anna', nazwisko = 'Nowak' WHERE id = 2;
-- Błąd podczas aktualizacji ocen
UPDATE oceny SET ocena = 'Błąd' WHERE uczen_id = 2;
ROLLBACK;
Testy przypięte do lekcji | |
---|---|
Aby uzyskać dostęp do testów i ćwiczeń interaktywnych - Zaloguj się |