Transakcja (ODBC)
Ten temat dotyczy klas MFC ODBC.
Transakcji jest sposobem na grupy lub partii serii aktualizacje źródła danych tak, że wszystkie są zobowiązane na raz lub brak są zobowiązane, Jeśli wycofasz transakcji.Jeśli transakcja nie jest używana, zmiany w źródle danych są zobowiązane automatycznie zamiast zaangażowanych na żądanie.
[!UWAGA]
Nie wszystkie sterowniki baz danych ODBC obsługuje transakcji.Wywołanie CanTransact Członkowskich funkcji użytkownika CDatabase lub CRecordset obiekt, aby sprawdzić, czy sterownik obsługuje transakcje, dla danej bazy danych.Należy zauważyć, że CanTransact nie powiadomimy czy źródło danych umożliwia obsługę transakcji pełne.Musisz wywołać CDatabase::GetCursorCommitBehavior i CDatabase::GetCursorRollbackBehavior po CommitTrans i wycofywania sprawdzić wpływ transakcji na otwartym CRecordset obiektu.
Wzywa do AddNew i Edytuj funkcji elementów członkowskich z CRecordset obiektu wpływają na źródło danych natychmiast po wywołaniu Aktualizacja.Usuwanie wywołania również zaczynają obowiązywać natychmiast.Natomiast można użyć transakcji, składający się z wielu wywołań AddNew, Edytuj, Aktualizacja, i usunąć, które są wykonywane, ale nie zostały przyznane do czasu wywołania CommitTrans jawnie.Poprzez ustanowienie transakcji, można wykonać serię takich połączeń, zachowując możliwość ich wycofanie.Jeśli krytyczna zasób jest niedostępny lub niektórych innych sytuacja uniemożliwia całej transakcji uniemożliwia ukończenie, można wycofać transakcji, zamiast go.W takim przypadku zmiany należących do transakcji wpływają na źródła danych.
[!UWAGA]
Obecnie klasy CRecordset nie obsługuje aktualizacji źródła danych, jeśli zaimplementowano pobieranie wiersza luzem.Oznacza to, nie może wykonywać wywołania do AddNew, Edytuj, usunąć, lub Aktualizacja.Jednakże można napisać możesz własne funkcje do przeprowadzania aktualizacji, a następnie wywołać tych funkcji w ramach danej transakcji.Aby uzyskać więcej informacji na temat Pobieranie wiersza luzem, zobacz zestaw rekordów: pobieranie rekordów luzem (ODBC).
[!UWAGA]
Oprócz wpływających na twoim zestawie rekordów, transakcji wpływają na instrukcje SQL, które należy wykonać bezpośrednio, tak długo, jak używać ODBC HDBC związane z programu CDatabase obiektu lub ODBC HSTMT oparta na HDBC.
Transakcje są szczególnie przydatne, gdy masz wiele rekordów, które muszą być aktualizowane jednocześnie.W takim przypadku użytkownik chce uniknąć transakcji zakończona w połowie, takie jak może się zdarzyć, jeśli wystąpił wyjątek przed ostatniej aktualizacji.Grupowanie takie aktualizacje w transakcji pozwala odzyskiwania (rollback) od zmian i zwraca rekordy Państwu pretransaction.Na przykład jeśli bank przeniesienia pieniądze z konta, A konto B, zarówno wycofanie z depozytu i b, musi zostać poprawnie przetworzyć funduszy lub cała transakcja musi zakończyć się niepowodzeniem.
W klasach bazy danych, wykonywania transakcji za pośrednictwem CDatabase obiektów.A CDatabase obiekt reprezentuje połączenie ze źródłem danych i jeden lub więcej zestawów rekordów skojarzonych z tym CDatabase obiektu działać na tabelach bazy danych za pomocą funkcji elementów członkowskich zestawu rekordów.
[!UWAGA]
Obsługiwany jest tylko jeden poziom transakcji.Nie można zagnieździć transakcji ani transakcja może rozciągać się na wielu obiektów bazy danych.
Więcej informacji na temat jak transakcje są wykonywane można znaleźć w następujących tematach: