12.事务控制

1.简介
事务(Transaction)是指作为一个逻辑工作单元执行的一系列操作,这些操作要么全部成功,要么全部失败。事务确保对多个数据的修改作为一个单元来处理。
例如,张三在ATM机上给李四转账100元,在银行的业务系统中,主要会执行两步数据变更操作。一是从张三的账户减去100元,二是给李四的账户增加100元。试问,如果操作1执行成功,操作2执行失败会发生什么情况?这时就需要运用事务控制来避免这样的情况发生。

在MySQL中,只有使用了Innodb存储引擎的数据库或表才支持事务。
事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行。
事务用于管理insert、update和delete语句。

2.特性
如果某个数据库声称支持事务,那么该数据库必须具备ACID四个特性,即Atomicity(原子性)、 Consistency(一致性)、Isolation(隔离性)和Durability(持久性)。

  • 原子性:事务必须是原子工作单元,事务中包含的各操作要么都做,要么都不做。
  • 一致性:事务在执行完成时,必须使所有的数据都保持一致状态。
  • 隔离性:事务独立运行,多个事务之间相互隔离,互不干扰。事务的100%隔离,会牺牲速度。
  • 持久性:事务执行完成之后,它对系统的影响是永久性的。

3.事务控制
在默认情况下,MySQL是自动提交事务的,即每一条insert、update、delete的SQL语句提交后会立即执行commit操作。此外,可以使用start transaction或begin开启一个事务,或者将autocommit的值设置为0。对于一个事务,要么回滚,要么提交。

事务提交
如下图所示,从test用户账户上转账100元到admin账户上,进行提交操作。
在这里插入图片描述

事务回滚
如下图所示,从test用户账户上转账100元到admin账户上,进行回滚操作。在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Jgx1214/article/details/107496150
今日推荐