Udostępnij za pośrednictwem


Transakcja: jak transakcje wpływają na aktualizacje (ODBC)

Aktualizacje źródła danych są zarządzane podczas transakcji przy użyciu buforu edycji (ta sama metoda używana poza transakcjami). Elementy członkowskie danych pól zestawu rekordów wspólnie pełnią rolę buforu edycji zawierającego bieżący rekord, który zestaw rekordów tworzy kopię zapasową tymczasowo podczas elementu AddNew lub Edit. Delete Podczas operacji bieżący rekord nie jest kopii zapasowej w ramach transakcji. Aby uzyskać więcej informacji na temat buforu edycji i sposobu przechowywania bieżącego rekordu przez aktualizacje, zobacz Zestaw rekordów: Jak zestawy rekordów aktualizują rekordy (ODBC).

Uwaga

Jeśli zaimplementowano pobieranie wierszy zbiorczych, nie można wywołać AddNewmetody , Editlub Delete. Zamiast tego należy napisać własne funkcje, aby wykonywać aktualizacje źródła danych. Aby uzyskać więcej informacji na temat zbiorczego pobierania wierszy, zobacz Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC).

Podczas transakcji operacje AddNew, Editi Delete mogą zostać zatwierdzone lub wycofane. Skutki CommitTrans i Rollback mogą spowodować, że bieżący rekord nie zostanie przywrócony do buforu edycji. Aby upewnić się, że bieżący rekord został prawidłowo przywrócony, ważne jest, aby zrozumieć, jak CommitTrans funkcje CDatabase składowe i Rollback działają z funkcjami aktualizacji programu CRecordset.

Jak commitTrans wpływa na aktualizacje

W poniższej tabeli wyjaśniono wpływ CommitTrans transakcji.

Jak commitTrans wpływa na aktualizacje

Operacja Stan źródła danych
AddNew i Update, a następnie CommitTrans Nowy rekord jest dodawany do źródła danych.
AddNew (bez Update), a następnie CommitTrans Nowy rekord zostanie utracony. Rekord nie został dodany do źródła danych.
Edit i Update, a następnie CommitTrans Edytuje zatwierdzone w źródle danych.
Edit (bez Update), a następnie CommitTrans Zmiany w rekordzie zostaną utracone. Rekord pozostaje niezmieniony w źródle danych.
Delete wtedy CommitTrans Rekordy usunięte ze źródła danych.

Jak wycofywanie wpływa na transakcje

W poniższej tabeli wyjaśniono wpływ Rollback transakcji.

Jak wycofywanie wpływa na transakcje

Operacja Stan bieżącego rekordu Musisz również Stan źródła danych
AddNew i Update, a następnie Rollback Zawartość bieżącego rekordu jest przechowywana tymczasowo, aby zapewnić miejsce na nowy rekord. Nowy rekord jest wprowadzany do buforu edycji. Po Update wywołaniu bieżący rekord zostanie przywrócony do buforu edycji. Dodatek do źródła danych wykonanego przez Update program jest odwrócony.
AddNew (bez Update), a następnie Rollback Zawartość bieżącego rekordu jest przechowywana tymczasowo, aby zapewnić miejsce na nowy rekord. Bufor edycji zawiera nowy rekord. Wywołaj AddNew ponownie polecenie , aby przywrócić bufor edycji do pustego, nowego rekordu. Możesz też wywołać metodę Move(0), aby przywrócić stare wartości do buforu edycji. Ponieważ Update nie wywołano metody , nie wprowadzono żadnych zmian w źródle danych.
Edit i Update, a następnie Rollback Nieedytowana wersja bieżącego rekordu jest tymczasowo przechowywana. Zmiany są wprowadzane do zawartości buforu edycji. Po Update wywołaniu nieedytowana wersja rekordu jest nadal tymczasowo przechowywana. Dynaset: Przewiń bieżący rekord, a następnie z powrotem, aby przywrócić nieedytowaną wersję rekordu do buforu edycji.

Migawka: wywołaj metodę Requery , aby odświeżyć zestaw rekordów ze źródła danych.
Zmiany w źródle danych są Update odwracane.
Edit (bez Update), a następnie Rollback Nieedytowana wersja bieżącego rekordu jest tymczasowo przechowywana. Zmiany są wprowadzane do zawartości buforu edycji. Ponownie wywołaj metodę Edit , aby przywrócić nieedytowaną wersję rekordu do buforu edycji. Ponieważ Update nie wywołano metody , nie wprowadzono żadnych zmian w źródle danych.
Delete wtedy Rollback Zawartość bieżącego rekordu jest usuwana. Wywołaj metodę Requery , aby przywrócić zawartość bieżącego rekordu ze źródła danych. Usunięcie danych ze źródła danych jest odwracane.

Zobacz też

Transakcja (ODBC)
Transakcja: wykonywanie transakcji w zestawie rekordów (ODBC)
Klasa CDatabase
Klasa CRecordset