跳转至

事务处理

  • 事务处理:可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行,保证数据库不包含不完整的操作结果
  • 术语:
    • 事务:一组SQL语句
    • 回退:指撤销指定SQL语句的过程
    • 提交:指将未存储的SQL语句结果写入数据库表
    • 保留点:指事务处理中设置的临时占位符(placeholder),允许对它发布回退(不同于对整个事务进行回退)

控制事务处理

  • 标识事务开始:START TRANSACTION

使用ROLLBACK

  • 回退(撤销)MySQL语句
  • ROLLBACK只能在一个事务处理内使用(START TRANSACTION命令之后)
    select * from ordertotals;
    -- 开始一个事务
    start transaction;
    delete from ordertotals;
    select * from ordertotals;
    -- 回退
    rollback;
    select * from ordertotals;
    
  • 可回退的语句:
    • INSERT
    • UPDATE
    • DELETE

使用COMMIT

  • 提交事务
    start transaction;
    delete from orderitems where order_num = 20010;
    delete from orders where order_num = 20010;
    commit;
    

    隐含事务关闭:当COMMITROLLBACK语句执行后,事务会自动关闭

使用保留点

  • 语法:
    • 声明保留点:SAVEPOINT savepoint_name
    • 回退至保留点:ROLLBACK TO savepoint_name
  • 保留点越多越好:
    • 可以按照自己的意愿灵活进行回退
  • 释放保留点:
    • 保留点在事务处理完成后自动释放
    • 使用RELEASE savepoint_name语句释放保留点