SAVEPOINT
SAVEPOINT записывает точку отката активной транзакции.
Синтаксис
Заголовок раздела «Синтаксис»SAVEPOINT savepoint_nameОписание
Заголовок раздела «Описание»Последующую работу можно отменить через ROLLBACK TO, не отбрасывая предыдущие изменения. После ROLLBACK TO точка остаётся активной до RELEASE или завершения транзакции.
Параметры
Заголовок раздела «Параметры»savepoint_name является идентификатором. Имена без кавычек не зависят от
регистра, а имена в кавычках сохраняют регистр.
Результат
Заголовок раздела «Результат»Успех возвращает пустой командный результат и добавляет точку в текущую транзакцию.
Поведение в транзакции
Заголовок раздела «Поведение в транзакции»SAVEPOINT допустим только после BEGIN. COMMIT и обычный ROLLBACK удаляют все точки этой транзакции.
Ошибки и ограничения
Заголовок раздела «Ошибки и ограничения»Команда вне транзакции завершается ошибкой. Embedded, TCP и CLI версии 1.2
направляют SAVEPOINT и ROLLBACK TO SAVEPOINT в активную транзакцию текущего
подключения.
SAVEPOINT не требует отдельного объектного права. Операторы до и после него сохраняют обычные требования доступа.
CREATE TABLE ref_savepoint (id INTEGER PRIMARY KEY, value INTEGER);BEGIN;INSERT INTO ref_savepoint VALUES (1, 10);SAVEPOINT before_change;UPDATE ref_savepoint SET value = 20 WHERE id = 1;ROLLBACK TO SAVEPOINT before_change;COMMIT;SELECT id, value FROM ref_savepoint;См. также
Заголовок раздела «См. также»См. Транзакции и конкурентность, ROLLBACK и RELEASE SAVEPOINT.