Po tej lekcji potrafisz
Wyjaśnić różnicę między COMMIT i ROLLBACK oraz zaplanować spójny zestaw zmian.
Transakcja pozwala potraktować zestaw zmian jak jedną operację. COMMIT zatwierdza zmiany; ROLLBACK cofa niezatwierdzone zmiany bieżącej transakcji. W naszym ćwiczeniu wszystkie tabele używają InnoDB. Nie zakładaj, że dowolny silnik tabel obsługuje wycofywanie.
Nie każde polecenie zachowuje się jak INSERT. Polecenia zmieniające strukturę, np. CREATE TABLE lub ALTER TABLE, mogą powodować niejawne zatwierdzenie. Nie mieszaj ich z ćwiczeniami, które chcesz wycofać. Po błędzie w ręcznie wykonywanej transakcji świadomie wykonaj ROLLBACK — nie zakładaj, że błąd pojedynczego polecenia cofnął cały zestaw.
START TRANSACTION;
UPDATE wypozyczenia SET data_zwrotu = '2026-02-15' WHERE id = 2;
INSERT INTO wypozyczenia (id, ksiazka_id, czytelnik, data_wypozyczenia, data_zwrotu)
VALUES (5, 1, 'Czytelnik D', '2026-02-16', NULL);
SELECT id, czytelnik, data_zwrotu FROM wypozyczenia WHERE ksiazka_id = 1 ORDER BY id;
ROLLBACK;Teraz Twoja kolej
Przed wykonaniem przewidź, które wiersze zobaczysz wewnątrz transakcji. Wykonaj cały blok i sprawdź dane po ROLLBACK.
Sprawdź rozwiązanie i oczekiwany efekt
W środku widzisz wypożyczenia 1, 2 i 5. Po wycofaniu zostają 1 i 2, a data zwrotu wypożyczenia 2 ponownie wynosi NULL. COMMIT zamiast ROLLBACK utrwaliłby oba działania.
Na co uważać
Ten przykład uczy grupowania zmian, nie stanowi kompletnego systemu rezerwacji. Obsługa równoczesnych wypożyczeń wymaga dodatkowych reguł i kontroli współbieżności.
Zanim przejdziesz dalej: wykonaj ćwiczenie samodzielnie i dopiero wtedy oznacz lekcję jako ukończoną. Oznaczenie zapisuje Twój postęp, nie jest oceną nauczyciela.