Документация по Clarion


ROLLBACK (завершить ошибочную транзакцию)



ROLLBACK

Оператор ROLLBACK завершает текущую транзакцию как и COMMIT. Выполнение оператора ROLLBACK подразумевает, что транзакция прошла НЕВЕРНО и база данных нуждается в восстановлении в то состояние, в котором она была до транзакции.
ROLLBACK сообщает файловому драйверу, участвующему в транзакции, о том, что временные файлы, необходимые для возвращения базы в первоначальное состояние, должны быть использованы для восстановления базы. Драйвер, в свою очередь, выполняет действия, которые необходимы в его файловой системе для отката транзакции.
Пример:
LOGOUT(,1,OrderHeader,OrderDetail) !Начинаем транзакцию
DO ErrHandler ! нет ли ошибок?
ADD(OrderHeader) !Добавим запись о родителе
DO ErrHandler ! нет ли ошибок?
LOOP X# = 1 TO RECORDS(DetailQue)
!Обработка сохраненных подробностей
GET(DetailQue,X#) !Читаем одну из очереди


DO ErrHandler ! нет ли ошибок?
Det:Record = DetailQue !Помещаем в буфер записи
ADD(OrderDetail) ! и добавляем ее в файл
DO ErrHandler ! нет ли ошибок?
.
COMMIT !Завершаем успешную транзакцию
ErrHandler ROUTINE !Обработчик ошибок
IF NOT ERRORCODE() THEN EXIT. !Ошибок нет? Вернемся.
ROLLBACK !Отмена прерванной транзакции
BEEP !Предупреждаем пользователя
SHOW(25,1,'Ошибка транзакции - ' & ERROR())
ASK ! и ждем нажатия клавиши
RETURN ! затем возвращаемся
См. также: ,





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