Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Зеркалирование
Управление ресурсами
Безопасность
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Потоковая передача
Восстановление после сбоев
Конфигурация
Индексы
Расширения
Справочник по SQL
Часто задаваемые вопросы
Определяет новую контрольную точку в текущей транзакции.
SAVEPOINT savepoint_name
SAVEPOINT создает новую контрольную точку в текущей транзакции.
Контрольная точка — это специальная метка внутри транзакции, которая позволяет откатить все команды, выполненные после её установки, восстановив состояние транзакции на момент создания контрольной точки.
savepoint_name
Используйте команду ROLLBACK TO SAVEPOINT для отката до контрольной точки. Используйте RELEASE SAVEPOINT для удаления контрольной точки с сохранением эффекта всех команд, выполненных после её создания.
Контрольные точки можно создавать только внутри блоков транзакций. В одной транзакции может быть определено несколько контрольных точек.
Создание контрольной точки и последующий откат всех команд, выполненных после её создания:
BEGIN;
INSERT INTO table1 VALUES (1);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (2);
ROLLBACK TO SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (3);
COMMIT;
В результате выполнения указанной транзакции будут вставлены значения 1 и 3, но не 2.
Создание и последующее удаление контрольной точки:
BEGIN;
INSERT INTO table1 VALUES (3);
SAVEPOINT my_savepoint;
INSERT INTO table1 VALUES (4);
RELEASE SAVEPOINT my_savepoint;
COMMIT;
В результате выполнения указанных транзакций одновременно будут вставлены значения 3 и 4.
Стандарт SQL требует, чтобы при создании контрольной точки с уже существующим именем старая контрольная точка автоматически удалялась. В базе данных YMatrix старые контрольные точки сохраняются, хотя при откате или освобождении используются только более новые. (После освобождения более новых контрольных точек более старые снова становятся доступными для использования в командах ROLLBACK TO SAVEPOINT и RELEASE SAVEPOINT.) За пределами этого поведения команда SAVEPOINT полностью соответствует стандарту SQL.