СВОЕТОЧКА
Синтаксис
SAVEPOINT identifier ROLLBACK [WORK] TO [SAVEPOINT] identifier RELEASE SAVEPOINT identifier
Описание
InnoDB поддерживает SQL-команды SAVEPOINT, ROLLBACK TO SAVEPOINT, RELEASE SAVEPOINT и необязательное ключевое слово WORK для ROLLBACK.
Каждая своеточка должна иметь допустимый идентификатор MariaDB. Своеточка — это именованная подтранзакция.
Обычно ROLLBACK отменяет изменения, выполненные в рамках всей транзакции. При использовании с предложением TO он отменяет изменения, выполненные после указанной своеточки, и удаляет все последующие своеточки. Однако все блокировки, полученные после своеточки, сохраняются. RELEASE SAVEPOINT не откатывает и не подтверждает никакие изменения, а только удаляет указанную своеточку.
Когда начинается выполнение триггера или хранимой функции, невозможно использовать операторы, которые ссылаются на своеточку, определённую вне этой хранимой программы.
При выполнении COMMIT (включая неявные подтверждения) или оператора ROLLBACK (без предложения TO) они действуют на всю транзакцию, и все своеточки удаляются.
Ошибки
Если выдается COMMIT или ROLLBACK, и транзакция не была начата, ошибка не сообщается.
Если выдается SAVEPOINT, и транзакция не была начата, ошибка не сообщается, но своеточка не создаётся. Когда вызывается ROLLBACK TO SAVEPOINT или RELEASE SAVEPOINT для своеточки, которой не существует, выдаётся ошибка такого типа:
ERROR 1305 (42000): SAVEPOINT svp_name does not exist
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/savepoint/