码迷,mamicode.com
首页 > 数据库 > 详细

MySQL的SQL语句 -事务性语句和锁定语句(3)- SAVEPOINT

时间:2020-12-09 11:42:24      阅读:9      评论:0      收藏:0      [点我收藏+]

标签:llb   触发器   ack   存储函数   ase   com   恢复   释放   comm   

SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 语句

1. SAVEPOINT identifier
2. ROLLBACK [WORK] TO [SAVEPOINT] identifier
3. RELEASE SAVEPOINT identifier

InnoDB 支持 SQL 语句 SAVEPOINT、ROLLBACK TO SAVEPOINT、RELEASE SAVEPOINT 和用于 ROLLBACK 的可选 WORK 关键字。

SAVEPOINT 语句设置一个名为 identifier 的事务保存点。如果当前事务具有同名的保存点,则删除旧的保存点并设置新的保存点。

ROLLBACK TO SAVEPOINT 语句将事务回滚到指定的保存点,而不终止该事务。当前事务在设置保存点后对行所做的修改在回滚中被撤消,但是 InnoDB 不会释放保存点之后存储在内存中的行锁。(对于新插入的行,锁信息由存储在该行中的事务 ID 携带;锁不单独存储在内存中。在这种情况下,行锁在撤消时被释放。)在命名保存点之后设置的保存点将被删除。

如果 ROLLBACK TO SAVEPOINT 语句返回以下错误,则表示不存在具有指定名称的保存点:

1.ERROR 1305 (42000): SAVEPOINT identifier does not exist

RELEASE SAVEPOINT 语句从当前事务的保存点集合中删除命名的保存点。不引发提交或回滚。如果保存点不存在,则为错误。

如果执行 COMMIT 或 ROLLBACK 而没有指定保存点,将删除当前事务的所有保存点。

当调用存储函数或激活触发器时,将创建新的保存点级别。以前级别上的保存点将不可用,因此不会与新级别上的保存点冲突。当函数或触发器终止时,它创建的所有保存点都将被释放,并恢复以前的保存点级别。

MySQL的SQL语句 -事务性语句和锁定语句(3)- SAVEPOINT

标签:llb   触发器   ack   存储函数   ase   com   恢复   释放   comm   

原文地址:https://blog.51cto.com/15023289/2559559

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!