SAVEPOINT

Определяет новую контрольную точку в текущей транзакции.

Синтаксис

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.

Смотрите также

BEGIN , RELEASE SAVEPOINT , ROLLBACK TO SAVEPOINT , COMMIT