Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сабина.doc.doc
Скачиваний:
2
Добавлен:
29.08.2019
Размер:
614.4 Кб
Скачать

2.17. Блокировка данных.

2.17.1. Типы блокировок.

В Visual FoxPro можно использовать два типа данных: блокировку таблицы и записи.

Блокировка таблицы запрещает доступ другим пользователям ко всей

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

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

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

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

Для блокировки записей используются взаимосвязанные функции Lock и Rlock.

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

2.18. Использование буферов.

Одним из мощных средств организации многопользовательской работы в Visual FoxPro является средство буферизации данных, которое позволяет лучше использовать локальные ресурсы и снижает нагрузку на сеть. При буферизации все сделанные вами изменение хранятся в оперативной памяти

на рабочей станции и не обновляются на файл-сервере до тех пор, пока вы

не выполните соответствующую команду.

В Visual FoxPro используются два типа буферизации: буферизация таблиц и записей. При буферизации записей после завершения редактирования записи все изменения записываются в БД. При буферизации таблиц измененные данные сохраняются в БД только после закрытия таблицы или вызова функции TABLEUPDATE ().

2.19. Использование транзакций.

Под транзакцией в системах управления БД понимают последовательность нескольких операций, в процессе выполнения которых сохраняется целостное состояние БД. В процессе выполнения транзакции, обновляемые данные временно хранятся в памяти или на локальном диске. Действительные изменения совершаются только после завершения транзакции. Если что-либо препятствует обновлению данных, все изменения отменяются.

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

- BEGIN TRANSACTIONИнициирует транзакцию.

- ROLLBACKОсуществляет откат, т.е. аннулирует все выполненные в течение транзакции действия.

- END TRANSACTION – Завершает транзакцию и сохраняет все выполненные действия в БД.

В некоторых случаях вам может понадобиться использовать вложенные транзакции, при этом каждая из них должна начинаться командой BEGIN TRANSACTION и завершаться командой END TRANSACTION. Команда ROLLBACK применима только к транзакции, внутри которой она выполняется. Команды BEGIN и END TRANSACTION могут находиться в разных функциях и процедурах.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]