Zestaw rekordów: więcej informacji o aktualizacjach (ODBC)
Ten temat dotyczy klas MFC ODBC.
Ten temat tłumaczy:
Wpływ aktualizacji innych operacji, takich jak transakcje,.
Aktualizacje i innych użytkowników.
Więcej informacji na temat funkcji elementów członkowskich Update i Delete.
[!UWAGA]
Ten temat dotyczy obiekty pochodzące z CRecordset w wiersz, który luzem pobieranie nie została zaimplementowana.Jeśli zaimplementowano pobieranie wiersza zbiorczego, niektóre informacje nie ma zastosowania.Na przykład, nie można wywołać funkcji AddNew, edytować, usunąć, i Aktualizacja funkcje składowe; można jednak wykonać transakcji.Aby uzyskać więcej informacji dotyczących pobierania wierszy bulk, zobacz Zestaw rekordów: zbiorcze pobieranie rekordów (ODBC).
Jak wpływają na inne operacje aktualizacji
Aktualizacje są zagrożone transakcji w mocy w czasie aktualizacji, zamykając zestaw rekordów przed wykonaniem transakcji oraz przewijając przed zakończeniem transakcji.
Wpływ aktualizacji transakcji
Poza zrozumienie jak AddNew, edytować, i usunąć pracy, ważne jest, aby zrozumieć, jak BeginTrans, CommitTrans, i Rollback funkcji elementów członkowskich z CDatabase współpracują funkcje aktualizacji CRecordset.
Domyślnie, wzywa do AddNew i edytować wpływają na źródle danych bezpośrednio pod numerem Aktualizacja.Usuwanie wywołania zaczynają obowiązywać natychmiast.Ale może ustanowić transakcji i wykonywać partię takich wywołań.Aktualizacje nie są stałe, dopóki nie zostaną zatwierdzone.Jeśli zmienisz zdanie, możesz można wycofać transakcji zamiast przeznaczania go.
Aby uzyskać więcej informacji o transakcjach, zobacz Transakcja (ODBC).
Jak zamknąć zestaw rekordów wpływa na aktualizacje
Jeśli zamkniesz zestaw rekordów lub związanych z nią CDatabase obiekt z transakcji w toku (nie o nazwie CDatabase::CommitTrans lub CDatabase::Rollback), wycofać transakcji z powrotem automatycznie (chyba że swoje zaplecze bazy danych jest aparat bazy danych Microsoft Jet).
Przestroga |
---|
Jeśli używasz aparatu bazy danych Microsoft Jet, zamykanie zestaw rekordów wewnątrz transakcji jawnej nie powoduje zwolnienie jednego z wierszy, które zostały zmodyfikowane lub blokad, które zostały wprowadzone, dopóki transakcja jawna jest przekazana lub wycofana.Zaleca się że możesz zawsze zarówno otwieranie i zamykanie zestawy rekordów wewnątrz lub na zewnątrz transakcji jawnej Jet. |
Jak przewijanie wpływa na aktualizacje
Gdy użytkownik Zestaw rekordów: przewijanie (ODBC) w zestawie rekordów, bufor Edycja jest wypełniona każdego nowego rekordu bieżącego (poprzedni rekord nie jest najpierw przechowywane).Przewijanie przeskakuje nad wcześniej usuniętych rekordów.Jeśli podczas przewijania po AddNew lub edytować wywołanie bez stawiania Aktualizacja, CommitTrans, lub Rollback po raz pierwszy, zostaną utracone wszystkie zmiany (z bez ostrzeżenia dla użytkownika) jako nowy rekord jest umieszczany w buforze edycji.Bufor Edycja jest zapełniany z rekordem przewinięte, przechowywana rekord zostanie zwolniona i pojawia się bez zmian w źródle danych.Dotyczy to zarówno AddNew i edytować.
Aktualizacje i aktualizacje innych użytkowników
Korzystając z zestawu rekordów do aktualizacji danych, aktualizacje wpływają na innych użytkowników.Podobnie aktualizacje innych użytkowników w czasie użytkowania zestawu rekordów wpływa na Ciebie.
W środowisku wielodostępnym inni użytkownicy mogą otworzyć zestawy rekordów, które zawierają takie same rekordy, wybranych w twoim zestawie rekordów.Zmiany rekordów przed ich pobraniem to są odzwierciedlane w twoim zestawie rekordów.Ponieważ zestawy dynamiczne pobrać rekord za każdym razem, którą przewinięty do niego, zestawy dynamiczne odzwierciedlają zmiany każdorazowo podczas przewijania do rekordu.Migawki pobrać rekord po raz pierwszy podczas przewijania, więc tylko te zmiany, które występują przed przewiń do rekordu początkowo odzwierciedlają migawek.
Rekordy po otwarciu zestawu rekordów dodane przez innych użytkowników nie są wyświetlane w twoim zestawie rekordów o ile możesz ponowić kwerendę.Jeżeli Twój zestaw rekordów jest dynamiczny zestaw wyników, modyfikacje istniejących rekordów przez innych użytkowników są wyświetlane w swojej dynamiczny podczas przewijania do dotkniętych rekordu.Jeżeli Twój zestaw rekordów jest migawką, zmiany nie są widoczne, aż requery migawki.Jeśli chcesz zobaczyć rekordy dodane lub usunięte przez innych użytkowników w migawki lub rekordy dodawane przez innych użytkowników w sieci dynamiczny rozmów CRecordset::Requery odbudować zestaw rekordów. (Należy zauważyć, że usunięcia innych użytkowników pojawiają się w swojej dynamiczny). Może również wywołać Requery Aby wyświetlić rekordy można dodać, ale nie aby zobaczyć wprowadzone usunięcia.
Porada |
---|
Aby wymusić buforowanie cały migawkę na raz, call MoveLast bezpośrednio po otwarciu migawki.Następnie wywołać MoveFirst do rozpoczęcia pracy z rekordów.MoveLastjest równoważne przewijanie wszystkich rekordów, ale go pobiera je wszystkie naraz.Należy jednak zauważyć, że to może obniżyć wydajność i nie może być wymagane dla niektórych sterowników. |
Skutki aktualizacje dla innych użytkowników są podobne do ich wpływu na Ciebie.
Więcej informacji na temat aktualizacji i usuwania
Ta sekcja zawiera dodatkowe informacje pomocne przy pracy z Aktualizacja i usunąć.
Aktualizacja sukcesów i niepowodzeń
Jeśli Aktualizacja się powiedzie, AddNew lub edytować kończy tryb.Aby rozpocząć AddNew lub edytować ponownie tryb, call AddNew lub edytować.
Jeśli Aktualizacja nie powiedzie się (zwraca FALSE lub zgłasza wyjątek), pozostają w AddNew lub edytować tryb, w zależności od tego, która funkcja wywołana ostatnio.Następnie można wykonać jedną z następujących czynności:
Zmodyfikuj pole element członkowski danych i spróbuj Aktualizacja ponownie.
Wywołanie AddNew Aby zresetować pole danych członków na wartość Null, ustaw wartości pola danych członków, a następnie wywołać Aktualizacja ponownie.
Wywołanie edytować ponowne załadowanie wartości, które były w zestawie rekordów przed pierwszym wywołaniem do AddNew lub edytować, ustaw wartości pola danych członków, a następnie wywołać aktualizacji ponownie.Po udanym aktualizacji call (z wyjątkiem po AddNew call), pole danych członków zachowują swoje nowe wartości.
Wywołanie przenieść (łącznie z przenieść z parametrem AFX_MOVE_REFRESH, lub 0), która opróżnia dowolne zmiany i kończy się żadnego AddNew lub edytować tryb efektu.
Aktualizowanie i usuwanie
W tej sekcji dotyczy zarówno Aktualizacja i usunąć.
Na Aktualizacja lub usunąć operacji, należy uaktualnić jeden i tylko jeden rekord.Ten rekord jest bieżący rekord, który odpowiada wartości danych w polach zestawu rekordów.Jeśli jakiegoś powodu żadne rekordy nie są dotknięte lub występuje więcej niż jeden rekord, wyjątek zawierające jeden z następujących RETCODE wartości:
AFX_SQL_ERROR_NO_ROWS_AFFECTED
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED
Gdy te wyjątki są generowane, użytkownik pozostanie w AddNew lub edytować Państwo było w, gdy wywołana Aktualizacja lub usunąć.Poniżej przedstawiono najbardziej typowe scenariusze, w których widoczna będzie tych wyjątków.Masz najbardziej prawdopodobne, aby zobaczyć:
AFX_SQL_ERROR_NO_ROWS_AFFECTED podczas przy pomocy Optymistyczny tryb blokowania i inny użytkownik zmodyfikował rekord w sposób, który uniemożliwia ramach identyfikacji właściwego rekordu, aby zaktualizować lub usunąć.
AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED podczas aktualizowania tabela ma klucz podstawowy lub indeks unikatowy i możesz nie mają za mało kolumn w zestawie rekordów do jednoznacznego identyfikowania wiersza tabeli.
Zobacz też
Koncepcje
Zestaw rekordów: jak zestawy rekordów pobierają rekordy (ODBC)