Понятие транзакции. Обработка транзакций

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

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

- выполнение команды COMMIT или ROLLBACK;

- выполнение команды DDL или DCL (автоматическая фиксация);

- ошибка, завершение сеанса работы или аварийный останов системы.

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

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

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

- выполнение команды DDL (например, CREATE);

- выполнение команды DCL (например, GRANT);

- нормальный выход из SQL * Plus без явной посылки команды COMMIT или ROLLBACK.

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

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

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

- Предыдущее состояние данных может быть восстановлено, т.к. изменения производятся в буфере базы данных.

- Текущий пользователь может просмотреть результаты своих операций DML с помощью команды SELECT.

- Другие пользователи не могут видеть результаты команд DML, выполняемых текущим пользователем.

- Измененяемые строки блокируются, и другие пользователи не могут обновлять их содержимое.

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

- Измененные данные записываются в базу данных.

- Предшествующее состояние данных теряется.

- Все пользователи могут видеть результаты.

- Измененные строки разблокируются, и другие пользователи получают доступ к ним для обработки данных.

- Все точки сохранения стираются.

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

- Все незавершенные изменения отменяются.

- Данные возвращаются в прежнее состояние.

- Блокировка строк, над которыми выполнялись операции, отменяется.

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

COMMIT;

4. Откат результатов
Синтаксис

ROLLBACK [TO метка];

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: