Transakcja jest zbiorem operacji wykonywanych w ramach jednej sesji. Wszystkie operacje na bazie danych realizowane są w postaci ciągu transakcji. Transakcyjność zapewnia zapewnia nam bezpieczeństwo i stabilną pracę bazy danych. Wszystkie instrukcje w ramach jednej transakcji zostają wykonane w całości lub w całości zostają wycofane. Dzięki temu nie powstaje sytuacja w której tylko część danych modyfikowanych w przerwanej transakcji zostaje zmieniona.
Dane które podlegają zmianie, są odizolowane od innych użytkowników i procesów pracujących na bazie danych do czasu zakończenia transakcji.
Instrukcja COMMIT
Transakcja jest zatwierdzana i kończy się w chwili wykonania instrukcji COMMIT. Wszystkie modyfikacje danych zostają zapisane w bazie. W przypadku wykonania którejkolwiek z instrukcji należącej do grupy DML wykonywany jest niejawny COMMIT.
Należy również zwrócić uwagę na ustawienia naszych edytorów SQL. Często jest w nich ustawiony domyślnie autocommit (jak na rysunku poniżej). Transakcje w takim wypadku zatwiedzane są bez wykonania przez nas instrukcji COMMIT.
Instrukcja ROLLBACK
Instrukcja ROLLBACK wycofuje wszystkie modyfikacje danych w ramach jednej transakcji.
Możemy ją zastosować jeśli się np. pomylimy. Ta instrukcja nie zadziała jeśli wykonamy COMMIT. Transakcja w takim wypadku jest już zakończona.
Instrukcja SAVEPOINT
Instrucja SAVEPOINT pozwala zachowywać punkty przywracania – działa to tak jak zapisywanie stanu w czasie gry :) W przypadku pomyłki możemy wrócić do miejsca zapisania SAVEPOINT bez straty tych instrukcji które zostały wykonane przed nim i konieczności rozpoczynania „gry” od początku.
Aby założyć nowy savepoint stosujemy:
SAVEPOINT NAZWA_SAVEPOINTA;
Aby przywrócić stan do określonego savepointa stosujemy:
ROLLBACK TO NAZWA_SAVEPOINTA;
Wszystkie modyfikacje danych zostają zapisane w bazie. W przypadku wykonania którejkolwiek z instrukcji należącej do grupy DML wykonywany jest niejawny COMMIT. - czyli, select wymaga zatwierdzenia?
OdpowiedzUsuń'Select' nie modyfikuje danych.
UsuńInstrukcje DML (Data Manipulation Language) służą do modyfikowania zawartości tabel. Istnieją
Usuńtrzy takie instrukcje:
INSERT dodaje wiersze do tabeli.
UPDATE zmienia wiersze.
DELETE usuwa wiersze.
Nie, absolutnie nie. Wymagają tego tylko operacje DML czyli UPDATE, INSERT, DELETE
OdpowiedzUsuńDziękuję, w takim razie chyba ma Pan nieścisłość we wpisie "Podstawowe definicje".
OdpowiedzUsuńselect to nie operacja DML a DQL :)
Usuń