Иллюстрированный самоучитель по Visual FoxPro 7

Блокировка таблицы

Для установки блокировки изменений таблицы вы должны использовать функцию FLOCK, которая имеет следующий синтаксис:

FLOCK([псевдонимТаблицы])

Функция блокировки проверяет текущий статус таблицы. Если в результате теста определяется, что таблица не заблокирована, она блокируется, и пользователь может продолжать с ней работать. Функция при этом возвращает логическое значение T. (Истина) и таблица становится доступной пользователю, выполнившему блокировку, на чтение и запись. Остальным пользователям таблица базы данных доступна только на чтение. Если таблица уже заблокирована другим пользователем, заблокировать таблицу не удается и функция возвращает значение F. (Ложь). Для блокировки таблицы в текущей области псевдоним можно не указывать.

В приведенном ниже примере для блокировки таблицы customer используется команда FLOCK (). Если таблица успешно заблокирована, команда REPLACE ALL обновляет все записи в ней. После этого команда UNLOCK снимает блокировку файла. Если файл невозможно заблокировать (такая ситуация возникает, если файл уже заблокирован другим пользователем), появится сообщение об ошибке.

SET EXCLUSIVE OFF
SET REPROCESS TO 0
USE Customer
IF FLOCK()
REPLACE ALL cLastName WITH UPPER(cLastName)
UNLOCK
ELSE
WAIT "Файл занят, подождите" WINDOW NOWAIT
ENDIF

Если вы редактируете две или более связанных командой SET RELATION таблиц, вам необходимо блокировать каждую связанную таблицу самостоятельно, т. к. блокировка одной из связанных таблиц не блокирует связанные с ней таблицы. Возможны ситуации, когда вы изменяете данные только в одной таблице, а другие используются для отображения дополнительной информации и их не требуется блокировать.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.