Поделиться через


Набор записей: блокировка (ODBC)

Данный раздел относится к классам ODBC библиотеки MFC.

Содержание раздела:

  • Виды блокировки записей.

  • Как блокировать записи в наборе во время обновлений.

При использовании набора записей для обновления записи в источнике данных приложение может блокировать запись, в результате одновременное обновление записи другим пользователем невозможно. Состояние записи, обновляемой одновременно двумя пользователями, остается неопределенным, если система не сможет гарантировать одновременное обновление записи двумя пользователями.

Примечание

В этом разделе приведены сведения, относящиеся к объектам, производным от класса CRecordset, в котором групповая выборка строк не реализована.Если групповая выборка строк реализована, некоторые сведения могут быть неприменимы.Например, нельзя вызвать функции-члены Edit и Update.Дополнительные сведения о групповой выборке строк см. в разделе Набор записей. Групповая выборка строк (ODBC).

Режимы блокировки записей

Классы базы данных предоставляют два режима блокирования записей:

  • Оптимистическая блокировка (по умолчанию)

  • Пессимистическая блокировка

Обновление записи происходит в три этапа:

  1. Операция начинается с вызова функции-члена Edit.

  2. Вы меняете соответствующие поля текущей записи.

  3. Операция завершена, после чего обычно выполняется обновление посредством вызова функции-члена Update.

При оптимистической блокировке запись на источнике данных блокируется только при вызове Update. Если оптимистическая блокировка используется в многопользовательской среде, то приложение должно обрабатывать условие сбоя функции Update. При выполнении пессимистической блокировки запись блокируется как только вызывается Edit и не высвобождается до тех пор, пока не будет вызвана функция Update (сбои обозначаются с помощью механизма CDBException, а не значениями FALSE, возвращаемыми функцией Update). Пессимистическая блокировка создает потенциальные проблемы с производительностью для других пользователей, так как при одновременном доступе к одной и той же записи придется ждать завершения процесса Update вашего приложения.

Блокировка записей в наборе записей

Если требуется изменить режим блокировки объекта набора записей, заданный по умолчанию, то этот режим должен быть изменен до того, как будет вызван метод Edit.

Изменение текущего режима блокировки для набора записей

  • Вызовите функцию-член SetLockingMode, указывая CRecordset::pessimistic или CRecordset::optimistic.

Новый режим блокировки будет оставаться в силе до тех пор, пока не будет изменен или пока набор записей не будет закрыт.

Примечание

В настоящее время относительно немного драйверов ODBC поддерживают пессимистическую блокировку.

См. также

Основные понятия

Набор записей (ODBC)

Набор записей. Объединение (ODBC)

Набор записей. Добавление, обновление и удаление записей (ODBC)