26. 管理事务处理

1. 事务处理

  1. 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。

2. 控制事务处理

  1. MySQL使用下面的语句来标识事务的开始:

    1. start transaction

2.1. 使用ROLLBACK

  1. MySQL的ROLLBACK命令用来回退(撤销)MySQL语句,请看下面的语句

    1. img
    2. img
    3. 这时用一条ROLLBACK语句回退START TRANSACTION之后的所有语句
  2. ROLLBACK只能在一个事务处理内使用(在执行一条START TRANSACTION命令之后)

2.2. 使用COMMIT

  1. 在事务处理块中,提交不会隐含地进行。为进行明确的提交,使用COMMIT语句

    1. img
    2. 在这个例子中,从系统中完全删除订单20010。因为涉及更新两个数据库表orders和orderItems,所以使用事务处理块来保证订单不被部分删除。最后的COMMIT语句仅在不出错时写出更改。如果第一条DELETE起作用,但第二条失败,则DELETE不会提交(实际上,它是被自动撤销的
  2. 隐含事务关闭当COMMIT或ROLLBACK语句执行后,事务会自动关闭(将来的更改会隐含提交)。

2.3. 使用保留点

  1. 为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符。这样,如果需要回退,可以回退到某个占位符。

  2. 这些占位符称为保留点。为了创建占位符,可如下使用SAVEPOINT

    1. img
  3. 每个保留点都取标识它的唯一名字,以便在回退时,MySQL知道要回退到何处。为了回退到本例给出的保留点,可如下进行:

    1. img
  4. 保留点越多越好可以在MySQL代码中设置任意多的保留点,越多越好。为什么呢?因为保留点越多,你就越能按自己的意愿灵活地进行回退

  5. 释放保留点保留点在事务处理完成(执行一条ROLLBACK或COMMIT)后自动释放。

2.4. 更改默认的提交行为

  1. 为指示MySQL不自动提交更改,需要使用以下语句

    1. img

26. 管理事务处理
http://binbo-zappy.github.io/2024/11/27/mysql_bzbh/26-管理事务处理/
作者
Binbo
发布于
2024年11月27日
许可协议