Spec-Zone .ru
спецификации, руководства, описания, API

13.3.4. SAVEPOINT, ROLLBACK TO SAVEPOINT, и RELEASESAVEPOINT Синтаксис

SAVEPOINT identifierROLLBACK [WORK] TO [SAVEPOINT] identifierRELEASE SAVEPOINT identifier

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

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

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

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

ERROR 1305 (42000): SAVEPOINT identifier does not exist

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

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

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