Transakcje (dostęp do danych MFC)
Koncepcja transakcji została opracowana w celu obsługi przypadków, w których wynikowy stan bazy danych zależy od całkowitego powodzenia serii operacji. Może się to pojawić, ponieważ kolejne operacje mogą modyfikować wyniki poprzednich operacji. W takich przypadkach, jeśli jakakolwiek operacja zakończy się niepowodzeniem, stan wynikowy może być nieokreślony.
Aby rozwiązać ten problem, transakcje grupować serię operacji w taki sposób, aby zapewnić integralność wyniku końcowego. Wszystkie operacje muszą zakończyć się powodzeniem, a następnie zostać zatwierdzone (zapisane w bazie danych) lub cała transakcja zakończy się niepowodzeniem. Anulowanie transakcji jest nazywane wycofaniem. Wycofywanie umożliwia odzyskiwanie ze zmian i zwraca bazę danych do stanu przedtransakcji.
Na przykład w automatycznej transakcji bankowej, jeśli przelewasz pieniądze z konta A na konto B, zarówno wypłata z A, jak i depozyt do B musi zakończyć się powodzeniem w celu prawidłowego przetworzenia funduszy lub cała transakcja musi zakończyć się niepowodzeniem.
Transakcja musi mieć właściwości ACID, które są następujące:
Niepodzielność Transakcja jest niepodzielna jednostka pracy i wykonuje dokładnie raz; wszystkie prace są wykonywane lub żadna z nich.
Spójność Transakcja zachowuje spójność danych, przekształcając jeden spójny stan danych w inny spójny stan danych. Dane powiązane z transakcją muszą być zachowywane semantycznie.
Izolacja Transakcja jest jednostką izolacji i każda występuje oddzielnie i niezależnie od transakcji współbieżnych. Transakcja nigdy nie powinna widzieć etapów pośrednich innej transakcji.
Trwałość Transakcja jest jednostką odzyskiwania. Jeśli transakcja powiedzie się, jego aktualizacje będą się powtarzać, nawet jeśli system ulegnie awarii lub zostanie zamknięty. Jeśli transakcja zakończy się niepowodzeniem, system pozostanie w stanie poprzedzającym zatwierdzenie transakcji.
Transakcje można obsługiwać w ole DB (zobacz Obsługa transakcji w OLE DB) lub ODBC (zobacz Transakcje (ODBC)).
Transakcja rozproszona to transakcja, która aktualizuje rozproszone dane, czyli dane w więcej niż jednym sieciowym systemie komputerowym. Jeśli chcesz obsługiwać transakcje w systemie rozproszonym, należy użyć ADO.NET, a nie obsługi transakcji OLE DB.