DeepEdit!

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

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

Оператор ROLLBACK

При выполнении оператора ROLLBACK отменяются все или некоторые изменения, внесенные вашим сеансом в базу данных в рамках текущей транзакции. Почему может возникнуть желание отменить изменения? Что касается SQL, оператор ROLLBACK обеспечивает возможность исправления возможных ошибок, например:
DELETE FROM orders;
«О нет, я хотел удалить только те заказы, которые были сделаны до мая 1995 года!!!» Нет проблем - просто выполните ROLLBACK. С точки зрения кодирования приложения смысл ROLLBACK в том, что он позволяет при возникновении проблемы вернуться в исходное состояние - начать все «с чистого листа».
Синтаксис оператора ROLLBACK:

Можно использовать оператор ROLLBACK в одном из двух режимов: без указания параметров или с предложением TO, указывающим точку сохранения, до которой следует откатить изменения. ROLLBACK без параметров отменяет все изменения, внесенные в рамках транзакции.
Форма ROLLBACK TO позволяет отменить все изменения и освободить все блокировки, сделанные после того, как была установлена точка сохранения с меткой имя_точки_сохранения (об установке точек сохранения будет подробно рассказано в следующем разделе 1, посвященном оператору SAVEPOINT).
Параметр имя_точки_сохранения - это необъявляемый идентификатор Oracle, который не может быть ни литералом (заключенным в кавычки), ни именем переменной.
Допустимы все нижеперечисленные примеры использования ROLLBACK:

При выполнении отката до определенной точки сохранения все точки сохранения, установленные после точки с меткой имя_точки_сохранения, удаляются, но сама эта точка остается. То есть вы сможете возобновить свою транзакцию с данной точки и при необходимости снова откатить изменения до этой точки при возникновении другой ошибки.
PL/SQL неявно генерирует точку сохранения непосредственно перед выполнением оператора INSERT, UPDATE или DELETE. И в случае неудачного исполнения оператора DML откат изменений автоматически осуществляется до данной неявной точки сохранения. Таким образом, отменяется только последний оператор DML.
 









jAntivirus