SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 语句ide
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 的事务保存点。若是当前事务具备同名的保存点,则删除旧的保存点并设置新的保存点。code
ROLLBACK TO SAVEPOINT 语句将事务回滚到指定的保存点,而不终止该事务。当前事务在设置保存点后对行所作的修改在回滚中被撤消,可是 InnoDB 不会释放保存点以后存储在内存中的行锁。(对于新插入的行,锁信息由存储在该行中的事务 ID 携带;锁不单独存储在内存中。在这种状况下,行锁在撤消时被释放。)在命名保存点以后设置的保存点将被删除。事务
若是 ROLLBACK TO SAVEPOINT 语句返回如下错误,则表示不存在具备指定名称的保存点:内存
1.ERROR 1305 (42000): SAVEPOINT identifier does not exist
RELEASE SAVEPOINT 语句从当前事务的保存点集合中删除命名的保存点。不引起提交或回滚。若是保存点不存在,则为错误。it
若是执行 COMMIT 或 ROLLBACK 而没有指定保存点,将删除当前事务的全部保存点。class
当调用存储函数或激活触发器时,将建立新的保存点级别。之前级别上的保存点将不可用,所以不会与新级别上的保存点冲突。当函数或触发器终止时,它建立的全部保存点都将被释放,并恢复之前的保存点级别。命名