Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
database.doc
Скачиваний:
6
Добавлен:
01.03.2025
Размер:
1 Мб
Скачать
☆

7. Сохранение и Печать Результатов Запроса

Чтобы сохранить результаты запроса в файле и напечатать их на экране вводится команда SPOOL в следующей форме:

SPOOL имя_файла

SQL*PLUS сохранит всю информацию, которая будет выводиться после команды SPOOL, в указанный вами файл.

Если не указано расширение в имени файла, SPOOL добавит к имени файла расширение по умолчанию, чтобы указать, что это файл вывода. Это расширение зависит от операционной системы; обычно оно имеет имя LST или LIS.

SQL*PLUS продолжает записывать информацию в файл, пока не будет выключена запись в файл, используя SPOOL в следующей форме:

SPOOL OFF

Чтобы распечатать результаты запроса, запишите их в файл, как описано в предыдущей части. Затем, вместо использования SPOOL OFF, введите команду в следующей форме:

SPOOL OUT

Тема 15: Управление транзакциями

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

COMMIT;

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

ROLLBACK [TO метка];

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

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

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

SQL> UPDATE…

SQL> SAVEPOINT update_done; Savepoint created.

SQL> ROLLBACK TO update_done; Rollback complete.

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