Udostępnij za pośrednictwem


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.

Zobacz też

Programowanie dostępu do danych (MFC/ATL)