Bazy danych II Transakcje Piotr Górczyński 25/08/2001
Transakcyjność Transakcja umożliwia powrót do sytuacji przed jej rozpoczęciem, jeśli w jej trakcie wystąpi błąd Podstawowy mechanizm baz danych Cechy transakcji: atomowość – w ramach jednej transakcji wykonują się wszystkie operacje albo żadna spójność – transakcja nie narusza spójności danych izolacja – transakcja nie wie o działaniu innych transakcji trwałość – po zakończeniu transakcji jej skutki są trwałe 25/08/2001
Przykład: księgowanie Dekret księgowy musi być zapisany na wszystkich kontach zgodnie z definicją księgowań Nie dopuszczalna jest sytuacja, że zapiszemy pieniądze np. na koncie zobowiązań, a nie zapiszemy na koncie, z którego to zobowiązanie wyniknęło 001 Wn MA 100 002 Wn MA 100 25/08/2001
Musimy wykonać następujące operacje: Realizacja Musimy wykonać następujące operacje: INSERT INTO [KONTO]( [KONTO], [WN], [MA]) VALUES( '001', 100, NULL) INSERT INTO [KONTO]( [KONTO], [WN], [MA]) VALUES( '002', NULL, 100) Gdyby druga operacja się nie powiodła (na przykład została wyjęta wtyczka komputera), księgowania byłyby błędne. 25/08/2001
Transakcja Rozpoczynamy transakcję poleceniem BEGIN TRANSACTION Od tej pory wszystkie operacje, które wykonamy nie będą widziane przez innych użytkowników. Operacje będą widoczne tylko dla nas, ściślej mówiąc będą widoczne w ramach naszej sesji połączenia z bazą danych. Wynik naszych operacji stanie się widoczny dla innych użytkowników po wykonaniu polecenia COMMIT TRANSACTION. 25/08/2001
Transakcja cd. Jeżeli w trakcie wykonywania operacji wystąpiłby błąd, to możemy wszystkie wycofać wykonując polecenie ROLLBACK TRANSACTION. Gdyby nastąpiło rozłączenie z serwerem, czyli zakończona zostałaby sesja użytkownika i nie nastąpiło wydanie polecenia COMMIT TRANSACTION, to serwer sam wykonałby polecenie ROLLBACK TRANSACTION. 25/08/2001
Realizacja BEGIN TRANSACTION INSERT INTO [KONTO]( [KONTO], [WN], [MA]) VALUES( '001', 100, NULL) INSERT INTO [KONTO]( [KONTO], [WN], [MA]) VALUES( '002', NULL, 100) COMMIT TRANSACTION 25/08/2001
Transakcje a obsługa błędów w VB Mechanizm obsługi błędów VB pozwala doskonale obsłużyć transakcje w bazie danych On Error Goto Obsluga ‘Rozpoczynamy transakcje cn.StartTrans ‘Wykonujemy operacje ‘na bazie danych które maja być w jednej transakcji ‘... ‘Zatwierdzamy zmiany cn.CommitTrans Exit Sub ‘Gdyby cos się nie powiodło, wycofujemy zmiany Obsluga: cn. RollbackTrans MsgBox Err.Number & ": " &_ Err.Description, vbCritical, "Błąd" 25/08/2001
Literatura Microsoft SQL Server Books Online 25/08/2001