Реляционные СУБД в Visual FoxPro 8

         

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

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

Для блокировки записей используются взаимозаменяемые функции lock и rlock, синтаксис которых отличается только наименованием функции:

RLOCK([ рабочаяОбласть I псевдонимТаблицы]

| [номераЗаписей, рабочаяОбласть

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

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

Для блокировки группы записей предварительно выполните команду set multilocks on и с помощью аргумента номераЗаписей укажите номера блокируемых записей. Номера записей задаются в символьном виде и разделяются запятыми. Например, для блокировки третьей и пятой записи таблицы необходимо указать "3 , 5".

Замечание
Для определения номеров записей используйте функцию recno ().

При успешной блокировке возвращается значение .т. (Истина) и заблокированные записи становятся доступными на чтение и запись пользователю, установившему блокировку. Остальные пользователи могут только просматривать заблокированные записи. При блокировке группы записей функция возвращает значение .т. только в том случае, если удалось заблокировать все указанные записи. Тем не менее записи, которые удалось блокировать, останутся заблокированными.

Если запись или таблица уже заблокированы другим пользователем, блокировка не будет выполнена и функция возвратит значение .f. (Ложь).

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

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

SET MULTILOCKS ON | OFF

Опция on разрешает блокировку группы записей, а опция off разрешает блокировку только одной записи.

Замечание
Переключение установки multilocks из on в off или из off в on приводит к снятию блокировки всех записей во всех открытых таблицах.


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