一 概述:
(1)事务:
*事务:用户定义的一个数据库操作序列单元,这些操作要么全做要么全不做,是一个不可分割的工作单元。
(2)事务的特性(ACID):
*原子性(Atomicity):事务的所有操作在数据库中要么全部完成,要么都不完成。
*一致性(Consistency):事务的执行结果必须是使数据库从一个一致状态变到另一个一致状态。全做和全不做,数据库都除以一致性状态。
*隔离性(Isolation):一个事务不能被其他事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能相互干扰。
*持久性(Durability):一个事务完成后,它对数据库的修改是永久性的。接下来的操作或出现系统故障都不会对其执行结果有任何影响。
(3)事务是数据库恢复和并发控制的基本单位。
二 事务的应用(以mysql为例):
(1)事务处理的关键术语:
*事务(transaction):一组SQL语句。
*回滚(rollback):撤销指定SQL语句的过程。
*提交(commit):将未存储的SQL语句结果写入数据库表。
*保留点(savepoint):事务处理中设置的临时占位符(place-holder),可以回退部分事务处理。
(2)事务开始:
*语句:start transaction.
(3)事务回滚:
*rollback:回滚整个事务。
*rollback to savepoint_name:回滚到指定占位符(事务部分回滚)。
(4)提交:
*隐式提交(implicit commit):一般的SQL语句是直接针对数据库表执行和编写,即提交(写或保持)操作是自动运行的。
*显式提交:在事务处理块中不会隐式提交,需使用commit显式提交。
(5)使用保留点:
*简单的rollback和commit语句可以撤销和写入整个事务处理,更复杂的事务处理可能需要部分提交或回滚。
*用savepoint语句放置占位符,可以支持事务的部分回滚。
*语句:savepoint delete1;//每个保留点需唯一名字。
*语句:rollback to delete1;//回滚到保留点delete1.
*语句:release savepoint delete1;//释放保留点。
(6)更改默认提交行为:
*默认的MySql行为是自动提交所有修改,可以通过set aotucommit=0 修改为不自动提交。
*autocommit标志标示决定是否自动提交修改,不管有没有COMMIT语句。autocommit标志针对每个连接而不是服务器。