Transakcje

Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200

Transakcją w bloku PL/SQL możemy nazwać grupę zmian wygenerowanych podczas sesji użytkownika, które to zmiany możemy w pewnych okolicznościach anulować, bądż je potwierdzać. Do obsługi transakcji wykorzystujemy dwa wyrażenia : COMMIT, ROLLBACK, SAVEPOINT oraz ROLLBACK TO.

  • COMMITWyrażenie to kończy bieżącą transakcje z potwierdzeniem wszystkich zmian dokonanych podczas jej trwania.
  • ROLLBACKWyrażenie to kończy bieżącą transakcje odwołując wszystkie zmiany dokonane podczas jej trwania.
  • SAVEPOINTNazywa i określa charakterystyczny punkt w transakcji umożliwiając w ten sposób wycofanie tylko części transakcji za pomocą wyrażenia ROLLBACK TO.
  • ROLLBACK TOKończy bieżącą transakcje odwołując wszystkie zmiany dokonane podczas transakcji, które nastąpiły po ustawieniu punktu transakcji podanego jako parametr.
Przykład:
BEGIN
UPDATE ...
DELETE ...
SAVEPOINT mypoint
INSERT INTO ...
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK TO mypoint
END;

W powyższym przykładzie blok SQL wykonuje dwie instrukcje SQL (UPDATE oraz INSERT), następnie ustawia punkt transakcji o nazwie mypoint. W kolejnej linii wykonuje polecenie INSERT. W podbloku EXCEPTION określamy, że kiedy zostanie wygenerowany wyjątek DUP_VAL_ON_INDEX (tj. przy próbie dodania do tabeli rekordu o wartości kolumny indeksowanej, która już istnieje w tabeli) następuje wycofanie tylko tych instrukcji, które wystąpiły po ustawieniu punktu transakcji mypoint. W tym przypadku będzie to instrukcja INSERT. Wszystkie instrukcje wykonane przed ustawieniem punktu transakcji będą potwierdzone.


powrót
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz