Zestaw rekordów: blokowanie rekordów (ODBC)

Ten temat dotyczy klas MFC ODBC.

W tym temacie opisano:

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:

  1. Rozpoczniesz operację, wywołując funkcję Edytuj składową.

  2. Zmieniasz odpowiednie pola bieżącego rekordu.

  3. 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 EditUpdate (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

  1. Wywołaj funkcję składową SetLockingMode , określając wartość CRecordset::pessimistic lub CRecordset::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)