Spec-Zone.ru › MySQL 9.2

15.3.4 Операторы SAVEPOINT, ROLLBACK TO SAVEPOINT и RELEASE SAVEPOINT

SAVEPOINT identifier
ROLLBACK [WORK] TO [SAVEPOINT] identifier
RELEASE SAVEPOINT identifier

InnoDB поддерживает SQL-операторы SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT и необязательное ключевое слово WORK для ROLLBACK.

Оператор SAVEPOINT устанавливает сохраненную точку транзакции с именем identifier. Если текущая транзакция уже имеет сохраненную точку с таким же именем, старая точка удаляется, и устанавливается новая.

Оператор ROLLBACK TO SAVEPOINT откатывает транзакцию до указанной сохраненной точки без её завершения. Изменения, внесённые текущей транзакцией в строки после установки сохранённой точки, отменяются при откатe, но InnoDB не освобождает блокировки строк, которые хранились в памяти после установки сохранённой точки. (Для новой вставленной строки информация о блокировке передаётся идентификатором транзакции, хранящимся в строке; блокировка не хранится отдельно в памяти. В этом случае блокировка строки снимается при отмене.) Сохранённые точки, установленные позже, чем указанная сохранённая точка, удаляются.

Если оператор ROLLBACK TO SAVEPOINT возвращает следующую ошибку, это означает, что сохранённая точка с указанным именем не существует:

ERROR 1305 (42000): SAVEPOINT identifier does not exist

Оператор RELEASE SAVEPOINT удаляет указанную сохранённую точку из набора сохранённых точек текущей транзакции. Никаких коммита или отката не происходит. Возникнет ошибка, если сохранённая точка не существует.

Все сохранённые точки текущей транзакции удаляются при выполнении COMMIT или ROLLBACK без указания сохранённой точки.

Новый уровень сохранённых точек создаётся при вызове хранимой функции или активации триггера. Сохранённые точки на предыдущих уровнях становятся недоступными и, следовательно, не конфликтуют с сохранёнными точками на новом уровне. По завершении функции или триггера все созданные им сохранённые точки освобождаются, и восстанавливается предыдущий уровень сохранённых точек.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/savepoint.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API