Zestaw rekordów: blokowanie rekordów (ODBC)
Ten temat dotyczy klas MFC ODBC.
W tym temacie opisano:
Dostępne rodzaje blokowania rekordów.
Jak zablokować rekordy w zestawie rekordów podczas aktualizacji.
Gdy używasz zestawu rekordów do aktualizowania rekordu w źródle danych, aplikacja może zablokować rekord, aby żaden inny użytkownik nie mógł jednocześnie zaktualizować rekordu. Stan rekordu zaktualizowanego przez dwóch użytkowników w tym samym czasie jest niezdefiniowany, chyba że system może zagwarantować, że dwóch użytkowników nie może jednocześnie zaktualizować rekordu.
Uwaga
Ten temat dotyczy obiektów pochodnych, CRecordset
z których pobieranie wierszy zbiorczych nie zostało zaimplementowane. Jeśli zaimplementowano pobieranie wierszy zbiorczych, niektóre informacje nie mają zastosowania. Na przykład nie można wywołać funkcji składowych Edit
i Update
. Aby uzyskać więcej informacji na temat zbiorczego pobierania wierszy, zobacz Zestaw rekordów: pobieranie rekordów zbiorczo (ODBC).
Tryby blokowania rekordów
Klasy baz danych zapewniają dwa tryby blokowania rekordów:
Optymistyczne blokowanie (ustawienie domyślne)
Pesymistyczne blokowanie
Aktualizowanie rekordu odbywa się w trzech krokach:
Rozpoczniesz operację, wywołując funkcję Edytuj składową.
Zmieniasz odpowiednie pola bieżącego rekordu.
Zakończenie operacji — i zwykle zatwierdzanie aktualizacji — przez wywołanie funkcji składowej Update .
Optymistyczna blokada blokuje rekord w źródle danych tylko podczas wywołania Update
. Jeśli używasz optymistycznego blokowania w środowisku wieloużytkownika, aplikacja powinna obsługiwać Update
warunek awarii. Pesymistyczne blokowanie blokuje rekord natychmiast po wywołaniu i nie zwalnia go do momentu wywołania Edit
Update
(błędy są wskazywane za pośrednictwem CDBException
mechanizmu, a nie przez wartość FALSE zwrócone przez Update
). Pesymistyczne blokowanie ma potencjalną karę za wydajność dla innych użytkowników, ponieważ równoczesny dostęp do tego samego rekordu może być konieczne odczekanie do ukończenia Update
procesu aplikacji.
Blokowanie rekordów w zestawie rekordów
Jeśli chcesz zmienić tryb blokowania obiektu zestawu rekordów z domyślnego, musisz zmienić tryb przed wywołaniem metody Edit
.
Aby zmienić bieżący tryb blokowania zestawu rekordów
- Wywołaj funkcję składową SetLockingMode , określając wartość
CRecordset::pessimistic
lubCRecordset::optimistic
.
Nowy tryb blokowania pozostaje w mocy, dopóki nie zmienisz go ponownie lub zestaw rekordów zostanie zamknięty.
Uwaga
Stosunkowo niewiele sterowników ODBC obecnie obsługuje pesymistyczne blokowanie.
Zobacz też
Zestaw rekordów (ODBC)
Zestaw rekordów: wykonywanie sprzężenia (ODBC)
Zestaw rekordów: dodawanie, aktualizowanie i usuwanie rekordów (ODBC)