Transakcja (ODBC)
Ten temat dotyczy klas MFC ODBC.
Transakcja jest sposobem grupy lub partia, seria o aktualizacjach źródła danych tak, że wszystkie są zobowiązane na raz lub brak są zobowiązane, jeśli wycofać transakcji.Jeśli nie używasz transakcji, zmiany w źródle danych są zobowiązane automatycznie a nie są zobowiązane na żądanie.
[!UWAGA]
Nie wszystkie sterowniki baz danych ODBC obsługuje transakcji.Wywołanie CanTransact funkcji składowej z sieci CDatabase lub CRecordset obiekt, aby sprawdzić, czy sterownik obsługuje transakcje dla danej bazy danych.Należy zauważyć, że CanTransact nie powiedzieć, czy źródło danych zapewnia obsługę transakcji pełnego.Musi także wywołać metodę CDatabase::GetCursorCommitBehavior i CDatabase::GetCursorRollbackBehavior po CommitTrans i Rollback Aby sprawdzić wpływ transakcji na otwartym CRecordset obiektu.
Wzywa do AddNew i edytować funkcji elementów członkowskich z CRecordset obiektu źródła danych natychmiast po wywołaniu wpływają na Aktualizacja.Usuwanie wywołania również zaczynają obowiązywać natychmiast.Natomiast można użyć transakcją składającą się z wielu wywołań AddNew, edytować, Aktualizacja, i usunąć, które są wykonywane, ale nie przekazano do czasu wywołania CommitTrans jawnie.Ustanawiając transakcji, można wykonać szereg takich połączeń bez utraty zdolności do ich przywrócenia.Jeśli krytycznego zasobu jest niedostępna lub innego warunku uniemożliwia ukończenie całej transakcji, można wykonać wycofanie transakcji zamiast przeznaczania go.W takim przypadku zmiany należących do transakcji wpływa na źródło danych.
[!UWAGA]
Obecnie, klasa CRecordset nie obsługuje aktualizacji do źródła danych, jeśli zaimplementowano pobieranie wiersza zbiorczego.Oznacza to, nie może dokonywać wywołań do AddNew, edytować, usunąć, lub Aktualizacja.Jednak można napisać użytkownik własne funkcje do przeprowadzania aktualizacji, a następnie wywołać tych funkcji w ramach danej transakcji.Aby uzyskać więcej informacji dotyczących pobierania wierszy bulk, zobacz zestaw rekordów: pobieranie rekordów luzem (ODBC).
[!UWAGA]
Oprócz wpływających na twoim zestawie rekordów, transakcji wpływają na instrukcji SQL, które należy wykonać bezpośrednio, tak długo, jak używać ODBC HDBC związane z sieci CDatabase obiektu lub ODBC HSTMT na podstawie tego HDBC.
Transakcje są szczególnie przydatne, gdy masz wiele rekordów, które muszą zostać zaktualizowane jednocześnie.W tym przypadku chcesz uniknąć pół zakończone transakcji, 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żeli bank przenosi pieniędzy z konta A konta B, zarówno wycofanie z depozytu i b musi zakończyć się sukcesem poprawnie przetworzyć funduszy lub cała transakcja musi zakończyć się niepowodzeniem.
W klasach bazy danych, wykonać 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łają w 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żdżać transakcji ani transakcji może rozciągać się na wiele obiektów bazy danych.
Więcej informacji na temat jak transakcje są wykonywane można znaleźć w następujących tematach: