Spec-Zone.ru › MySQL 5.7

13.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 откатывает транзакцию до указанной точки сохранения без завершения транзакции. Изменения, внесенные текущей транзакцией в строки после установки точки сохранения, отменяются при откате, но 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-5.7-en/savepoint.html

Spec-Zone.ru

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