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ótKomentarze
Dodaj Komentarz
Newsletter
Jeżeli chcesz być na bieżąco informowany o aktualnościach i poradach IT zapisz się do naszego newslettera.