Точки сохранения SAVEPOINT в PL/SQL Oracle
Простые операторы ROLLBACK и COMMIT, позволяют записывать и отменять всю транзакцию в целом. И хотя это подходит для простых транзакций, но для более сложных транзакций могут потребоваться частичные фиксации или откаты.
Для поддержки отката частичных транзакций необходимо сделать закладки в стратегически важных местах блока транзакций. И если потребуется откат, тогда его можно будет произвести до одного из этих мест. Такие закладки называются – точками сохранения.
Важный момент: чем больше точек сохранения вы используете, тем лучше. Благодаря большому количеству точек сохранения, вы всегда сможете произвести откат транзакций до нужного вам момента.
Для создания точки сохранения, нужно воспользоваться оператором SAVEPOINT.
SAVEPOINT имя_точки_сохранения;
Для того, чтобы произвести откат до созданной точки, достаточно обратиться к ней:
ROLLBACK TO SAVEPOINT имя_точки_сохранения;
Метки: Oracle, SAVEPOINT, Транзакции.
Могут ли быть одноименные точки отката, например, в основном коде и вызываемой процедуре ? Как отработается тогда откат в вызываемом объекте или в основном коде после завершения вызова ?
Использование одноименных точек восстановления недопустимо в рамках одной процедуры или функции.