26. 管理事务处理
1. 事务处理
- 事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。
2. 控制事务处理
MySQL使用下面的语句来标识事务的开始:
- start transaction
2.1. 使用ROLLBACK
MySQL的ROLLBACK命令用来回退(撤销)MySQL语句,请看下面的语句
- 这时用一条ROLLBACK语句回退START TRANSACTION之后的所有语句
ROLLBACK只能在一个事务处理内使用(在执行一条START TRANSACTION命令之后)
2.2. 使用COMMIT
在事务处理块中,提交不会隐含地进行。为进行明确的提交,使用COMMIT语句
- 在这个例子中,从系统中完全删除订单20010。因为涉及更新两个数据库表orders和orderItems,所以使用事务处理块来保证订单不被部分删除。最后的COMMIT语句仅在不出错时写出更改。如果第一条DELETE起作用,但第二条失败,则DELETE不会提交(实际上,它是被自动撤销的
隐含事务关闭当COMMIT或ROLLBACK语句执行后,事务会自动关闭(将来的更改会隐含提交)。
2.3. 使用保留点
为了支持回退部分事务处理,必须能在事务处理块中合适的位置放置占位符。这样,如果需要回退,可以回退到某个占位符。
这些占位符称为保留点。为了创建占位符,可如下使用SAVEPOINT
每个保留点都取标识它的唯一名字,以便在回退时,MySQL知道要回退到何处。为了回退到本例给出的保留点,可如下进行:
保留点越多越好可以在MySQL代码中设置任意多的保留点,越多越好。为什么呢?因为保留点越多,你就越能按自己的意愿灵活地进行回退
释放保留点保留点在事务处理完成(执行一条ROLLBACK或COMMIT)后自动释放。
2.4. 更改默认的提交行为
为指示MySQL不自动提交更改,需要使用以下语句
26. 管理事务处理
http://binbo-zappy.github.io/2024/11/27/mysql_bzbh/26-管理事务处理/