DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Точки сохранения

Как было показано        оператор ROLLBACK отменяет всю транзакцию. Однако с помощью команды SAVEPOINT (точка сохранения) можно отменить лишь часть транзакции. Синтаксис оператора SAVEPOINT: SAVEPOINT имя;
где имя — это имя точки сохранения. Синтаксис имен точек сохранения подчиняется обычным правилам, установленным для идентификаторов SQL (см. главу 3). Обратите внимание, что точки сохранения не описыва­ются в разделе объявлений, так как они являются глобальными для всей транзакции, а она может продолжаться и после окончания блока. После того как точка сохранения создана, можно осуществлять откат програм­мы к этой точке следующим образом:
ROLLBACK [WORK] TO SAVEPOINT имя;
При выполнении оператора ROLLBACK TO SAVEPOINT происходит следующее:
Вся работа, произведенная после этой точки сохранения, отменяет­ся. Однако точка сохранения остается активной. При желании откат можно повторить.
Все блокировки, установленные SQL-операторами после точки со­хранения, снимаются, и освобождаются ресурсы, запрошенные SQL-операторами после этой точки.
Транзакция не заканчивается, так как SQL-операторы находятся в состоянии ожидания.
Рассмотрим фрагмент блока PL/SQL:
Если вместо комментария вставить
Г]     ROLLBACK TO В;
то третий оператор INSERT и точка сохранения С будут отменены. Одна­ко первые два оператора INSERT будут обработаны. Если же вместо ком­ментария вставить
будут отменены второй и третий операторы INSERT и останется только первый.
Команда SAVEPOINT часто используется перед сложным фрагментом транзакции. Если эта часть транзакции выполняется неуспешно, ее мож­но откатить, что позволит продолжить выполнение предшествующей части.
 









jAntivirus