Начинает транзакцию. Транзакции поддерживаются только для таблиц в базе данных. См. CREATE DATABASE и ADD TABLE для информации относительно того, как создавать и добавлять таблицы к базе данных.
BEGIN TRANSACTION |
Замечания
Чтобы сохранять любые сделанные Вами изменения и завершить транзакцию, примените END TRANSACTION. Если происходит сбой выполнения транзакции (сбои сервера, сбои рабочей станции, или Вы выходите из Visual FoxPro без подтверждения транзакции) или если Вы применяете ROLLBACK, то файл или файлы участвующие в транзакции восстанавливаются в их первоначальное состояние.
Транзакции могут быть вложены на глубину до пяти уровней. Ошибка будет генерироваться, если Вы сделаете попытку вложения шестого уровня.
Когда Вы изменяете записи в таблице, которая участвует в транзакции, другие пользователи в сети не имеют доступа (чтение или запись) к записям, пока Вы не закончите транзакцию.
Когда другие пользователи в сети пробуют обратиться к записям, которые Вы изменили, они должны ждать, пока Вы не закончите вашу транзакцию. Они будут получать сообщение "Запись не доступна ..., пожалуйста ждите" до тех пор, пока записи не станут доступными. По этой причине, важно свести время транзакции к минимуму или провести транзакцию в течение того времени, когда другие не нуждаются в доступе.
Все индексные файлы IDX (неструктурные или non-CDX индексы) должны быть закрыты в течение транзакций. Только структурные индексы поддерживаются при выполнении транзакций.
Следующие команды и функции не поддерживаются при выполнении транзакции:
Команды и функции | |
---|---|
ADD TABLE |
DELETE CONNECTION |
APPEND PROCEDURES |
DELETE DATABASE |
CLEAR ALL |
DELETE TRIGGER |
CLOSE ALL1 |
DELETE VIEW |
CLOSE DATABASES1 |
MODIFY CONNECTION |
COPY INDEXES |
MODIFY DATABASE |
COPY PROCEDURES |
MODIFY PROCEDURE |
CREATE CONNECTION |
MODIFY VIEW |
CREATE DATABASE |
REMOVE TABLE |
CREATE TRIGGER |
RENAME TABLE |
CREATE VIEW |
REQUERY () |
CREATE SQL VIEW |
1, если применяется CLOSE ALL в то время как происходит транзакция, все таблицы во всех открытых базах данных закрываются. Однако, базы данных остаются открытыми. Применение CLOSE DATABASES во время транзакции закрывает все таблицы в текущей базе данных, но база данных остается открытой.
Также, следующие команды и функции не могут использоваться для указанной таблицы, участвующей в транзакции:
Команды и функции | |
---|---|
ALTER TABLE |
MODIFY STRUCTURE |
CREATE TABLE |
PACK |
CURSORSETPROP () |
REINDEX |
DELETE TAG |
TABLEREVERT () |
INDEX |
ZAP |
INSERT |
Пример
В следующем примере, открывается таблица клиентов в базе данных testdata. Устанавливается оптимистическая буферизация для таблицы клиентов. Отображается содержание полей cust_id
и company
и затем содержание поля company
заменяется в условиях буферизации данных.
Применяется BEGIN TRANSACTION чтобы запустить транзакцию. Функция TABLEUPDATE( ) используется, чтобы записать изменения в таблицу. Отображается новое содержание и применяется ROLLBACK для восстановления первоначального содержания поля company
. Снова отображаются поля cust_id
и company
с полем company
, содержащим свои первоначальные значения.
![]() | |
---|---|
CLEAR |
См. Также
Ссылки
MAKETRANSACTABLE () ФункцияISTRANSACTABLE () Функция
Другие Ресурсы
END TRANSACTION КомандаROLLBACK Команда
TXNLEVEL( ) Функция
Команды
Справочник Языка