Создание точки сохранения
Функция
Создание промежуточной точки сохранения в текущей локальной транзакции.
Спецификация
< создание точки сохранения >
::=
SET SAVEPOINT имя точки сохранения
Синтаксические правила
-
< Имя точки сохранения >
должно быть уникальным для канала в течение транзакции.SET SAVEPOINT "Итоговые суммы"; SET SAVEPOINT AFTER_SALE;
Пример
1) открываем канал в режиме EXCLUSIVE; 2) выполняем SQL-запросы, которые относятся к транзакции в целом (например, вносим в БД поступление новых заявок на товары); 3) организуем цикл по обработке заявок на товары. Заявка может быть удовлетворена (если товаров достаточно), или отклонена – в противном случае; 4) в начале обработки каждой заявки устанавливаем контрольную точку: set savepoint sp1; 5) выполняем SQL-запросы по обработке заявки; 6) по окончании обработки каждой заявки устанавливаем контрольную точку: set savepoint sp2; 7) если заявка не может быть принята, делаем откат к контрольной точке, выставленной до начала обработки заявки, sp1: rollback to savepoint sp1; иначе принимаем заявку к исполнению – делаем commit до контрольной точки, выставленной по окончании обработки заявки, sp2: commit to savepoint sp2; 8) продолжаем обработку заявок (шаг 4); 9) выполняем общий commit или rollback всей транзакции.