Начало работы
Подключение
Тесты производительности
Развёртывание
Использование данных
Загрузка данных
Миграция данных
Запрос данных
Управление кластерами
Обновление
Глобальное обслуживание
Масштабирование
Мониторинг
Безопасность
Лучшие практики
Технические принципы
Типы данных
Хранилище
Исполняющий движок
Потоковая обработка (Domino)
MARS3 Индексы
Расширения
Расширенные функции
Расширенный запрос
Федеративные запросы
Grafana
Резервное копирование и восстановление
Аварийное восстановление
Руководство
Настройка производительности
Устранение неполадок
Инструменты
Параметры конфигурации
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.