Назад    Оглавление    Далее

7. Управление транзакциями

Совокупность команд SQL, результаты действия которых еще не стали постоянными, называется транзакцией или логической единицей работы. В упрощенном представлении, транзакции содержат либо команды DML, выполняющие единое согласованное изменение данных, либо одну команду DDL или DCL.

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

При выполнении команд SQL COMMIT или ROLLBACK происходит явная обработка транзакции. При этом обеспечивается согласованность данных; появляется возможность проверить изменения в данных прежде, чем сделать их постоянными; взаимосвязанные операции логически группируются.

Неявная обработка транзакций приводит к автоматической фиксации изменений или автоматическому откату.

Автоматическая фиксация изменений (COMMIT) происходит в следующих случаях:

Автоматический откат (ROLLBACK) выполняется в случае аварийного прекращения сеанса работы в SQL*Plus или отказа системы.

Состояние данных до и после завершения транзакции

Состояние данных перед выполнением команд COMMIT или ROLLBACK:

Состояние данных после выполнения команды COMMIT:

Состояние данных после выполнения команды ROLLBACK:

Фиксация изменений в данных.

Синтаксис

COMMIT;

Примеры: Создание нового отдела обучения и добавление данных, по крайней мере, об одном служащем. Фиксация изменений.

 

Откат результатов

Синтаксис

ROLLBACK [TO метка];

где

метка

Имя маркера, определяющего точку сохранения

Пример: Во время удаления записи из таблицы TEST случайно стерты все данные этой таблицы. Ошибка исправляется, посылается правильная команда, и изменения фиксируются.

Откат до маркера.

С помощью команды SAVEPOINT можно создать в текущей транзакции маркеры для отката. Откат до такого маркера выполняется с помощью команды ROLLBACK TO.

Откат на уровне команды.

Если ошибка возникла при выполнении одной конкретной команды DML, отменяются только результаты этой команды. Для этого Oracle 7 использует неявную точку сохранения.

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

Для закрепления материала можно выполнить Практическое задание 11


Назад    Оглавление    Далее