一、事务控制是什么
事务(Transaction)是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功,要么 全部失败。事务确保对多个数据的修改作为一个单元来处理。
在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事务。
事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行。
事务用于管理INSERT、UPDATE和DELETE语句。
例如,我在ATM机上给小王转账100元,在银行的业务系统中,主要会执行两步数据变更操作: ①从我的账户减去100元; ②给小王的账户增加100元。这里:如果操作①执行成功,操作②执行失败会发生什么情况?-----还是会失败!
二、事务的特性
若数据库声称支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、 Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。
-
Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
-
Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预