• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • SAVEPOINT, ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT

    SAVEPOINT identifier
    ROLLBACK [WORK] TO [SAVEPOINT] identifier
    RELEASE SAVEPOINT identifier
    

    InnoDB支持SQL语句SAVEPOINTROLLBACK TO SAVEPOINTRELEASE SAVEPOINT和可选WORK关键字ROLLBACK

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

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

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

    ERROR 1305 (42000): SAVEPOINT identifier does not exist
    

    RELEASE SAVEPOINT语句从当前事务的保存点集中删除命名的保存点。没有提交或回滚发生。如果保存点不存在,这是一个错误。

    如果执行COMMIT或未ROLLBACK命名保存点的,则将删除当前事务的所有保存点。

    当调用存储功能或激活触发器时,将创建一个新的保存点级别。先前级别上的保存点将不可用,因此不会与新级别上的保存点冲突。函数或触发器终止时,将释放其创建的所有保存点,并还原先前的保存点级别。