Tworzenie transakcji i zarządzanie nimi
Aby jawnie uruchomić transakcję, użyj instrukcji BEGIN TRANSACTION lub skróconej wersji BEGIN TRAN.
Po rozpoczęciu transakcji należy ją zakończyć za pomocą jednego z następujących elementów:
- ZATWIERDZANIE TRANSAKCJI lub
- WYCOFYWANIE TRANSAKCJI.
Zapewnia to, że wszystkie zdania w transakcji zostaną zatwierdzone razem lub wycofane razem, jeśli wystąpi błąd.
Transakcje trwają aż do momentu wystawienia polecenia COMMIT TRANSACTION lub ROLLBACK TRANSACTION, albo gdy połączenie zostanie zerwane. Jeśli połączenie zostanie przerwane w ramach transakcji, cała transakcja zostanie wycofana.
Transakcje mogą być zagnieżdżone, a w takim przypadku transakcje wewnętrzne zostaną anulowane, jeśli zewnętrzna transakcja zostanie wycofana.
Nie wykryto błędu
Gdy instrukcje w transakcji zakończyły się bez błędu, użyj polecenia COMMIT TRANSACTION, czasami skracane do COMMIT TRAN. Spowoduje to zatwierdzenie zmian w bazie danych. Spowoduje to również zwolnienie zasobów, takich jak blokady utrzymywane podczas transakcji.
Jeśli zostanie wykryty błąd
Jeśli w ramach transakcji wystąpił błąd, użyj polecenia ROLLBACK.
Wycofywanie cofa wszelkie modyfikacje wprowadzone w danych podczas transakcji, pozostawiając je w stanie, w jakim były przed rozpoczęciem transakcji. Cofnięcie transakcji również zwalnia zasoby, takie jak blokady, które były utrzymywane dla tej transakcji.
XACT_ABORT
Jeśli ustawienie set XACT_ABORT jest włączone, jeśli program SQL Server zgłosi błąd, cała transakcja zostanie wycofana. Gdy SET XACT_ABORT jest ustawione na OFF, cofnięta zostaje jedynie instrukcja, która spowodowała błąd, jeśli ważność błędu jest niska.
Jeśli na przykład funkcja SET XACT_ABORT jest wyłączona, transakcja zawiera trzy instrukcje. Dwa z nich nie mają błędów, ale trzeci narusza ograniczenie sprawdzające. W tym przykładzie, mimo że trzy instrukcje znajdują się w transakcji, dwie z nich zostały zatwierdzone. W tym samym przykładzie, gdyby błąd został spowodowany przez nieprawidłowy typ danych, byłoby to na tyle poważne, że przeprowadzono by cofnięcie i żadne z zapytań nie zostałyby zatwierdzone.
Ponieważ nie zawsze jest jasne, czy transakcja zostanie zatwierdzona, czy wycofana, konieczne jest dodanie obsługi błędów do transakcji.