Быстрый старт
Развертывание
Моделирование данных
Подключение
Запись данных
Миграция
Запросы
Операции и обслуживание
Типовое обслуживание
Секционирование
Резервное копирование и восстановление
Масштабирование
Мониторинг
Настройка производительности
Устранение неполадок
Справочник
Руководство по инструментам
Типы данных
Хранилище данных
Выполняющая система
Конфигурация
Справочник по 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.