wtorek, 25 lipca 2017

Lekcja 35. Transakcje bazodanowe.

Transakcja bazodanowa jest grupą instrukcji SQL, która wykonuje logiczną jednostkę pracy. Możemy ją sobie wyobrazić jako nierozłączny zbiór instrukcji SQL, których wyniki powinny być zapisane w bazie danych w całości (lub zostać w całości wycofane).

Przykładem transakcji bazodanowych jest przelew pieniędzy z konta bankowego na inne. Instrukcja UPDATE odejmuje daną sumę od ilości gotówki na jednym koncie, a druga instrukcja UPDATE dodaje ją do pieniędzy na drugim koncie. Zarówno odejmowanie, jaki i dodawanie muszą być trwale zapisane w bazie danych. W przeciwnym razie pieniądze zostaną utracone. Jeżeli wystąpi problem z przelewem, wówczas zarówno odejmowanie, jak i dodawanie muszą zostać wycofane. W tym prostym przykładzie są wykorzystywane jedynie dwie instrukcje UPDATE, transakcja może jednak zawierać wiele instrukcji INSERT, UPDATE i DELETE.

Zatwierdzenie i wycofanie transakcji
Aby trwale zapisać wyniki instrukcji SQL znajdujących się w transakcji, należy wykonać zatwierdzenie za pomocą instrukcji COMMIT. Jeżeli chcemy wycofać wycofać wyniki, wykonujemy instrukcję ROLLBACK, która przywraca pierwotne wartości wierszy.

W poniższym przykładzie do tabeli customer jest dodawany jeden wiersz, a następnie zmiana jest utrwalana przez wykonanie instrukcji COMMIT:


W poniższym przykładzie do tabeli customer jest dodawany kolejny wiersz, a następnie zmiana jest wycofana za pomocą instrukcji ROLLBACK:


To zapytanie pokazuje nowy wiersz zatwierdzony przez instrukcję COMMIT:


Informacje o kliencie numer 1019 zostały utrwalone przez instrukcję COMMIT, natomiast informacje o kliencie numer 1020 zostały wycofane przez instrukcję ROLLBACK.

Rozpoczynanie i kończenie transakcji
Transakcja jest logiczną jednostką pracy, która umożliwia rozdzielenie instrukcji SQL. Posiada początek i koniec.
Transakcja rozpoczyna się, gdy ma miejsce jedno ze zdarzeń:
  • Połączenie z bazą danych i wykonanie instrukcji DML (INSERT, UPDATE lub DELETE).
  • Wcześniejsza transakcja kończy się i wprowadzamy kolejną instrukcję DML.
Transakcja kończy się, gdy:
  • Zostaną wykonane instrukcje COMMIT lub ROLLBACK.
  • Zostanie wykonana instrukcja DDL, taka jak CREATE TABLE - w takim przypadku zatwierdzenie dokonywane jest automatycznie.
  • Zostanie wykonana instrukcja DCL, taka jak GRANT - w takim przypadku zatwierdzenie dokonywane jest automatycznie. Instrukcja GRANT zostanie opisana w następnej lekcji.
  • Nastąpi rozłączenie z bazą danych.
  • Wykonanie instrukcja DML nie powiedzie się - w takim przypadku instrukcja ROLLBACK jest wykonywania jedynie dla tej konkretnej instrukcji DML. 


Brak komentarzy:

Prześlij komentarz