这篇文章主要介绍MySQL中事务控制对的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>什么是事务控制强>
事务是指作为一个逻辑工作单元执行的一系列操作,这些操作<强>要么全部成功强>,<强>要么全部失败>强。事务确保了多个数据的修改作为一个单元来处理。
- <李>
在MySQL中,只有使用了 Innodb 存储引擎的数据库或表才支持事物
李> <李>事务用于维护数据库的完整性,保证成批的sql语句要么都执行,要么都不执行
李> <李>事务用于管理<强>插入强>,<强>更新强>和<强>删除>强语句
李>假如,张三在ATM机上给李四转账100元,在银行的业务系统中,主要会执行两步数据变更操作:
- <李>
从张三的账户减去100元
李> <李>给李四的账户增加100元
李>试问,如果操作1执行成功,操作2执行失败会发生什么?
<强>事务的四个特性强>
如果某个数据库支持事务,那么该数据库必须具备<强>酸强>四个特性,即原子性(原子性),一致性(一致性),隔离(隔离性)、耐久性(持久性)。
- <李>
原子性:事务必须是原子工作单元,事务中包含的各操作要么都做,要么都不做
李> <李>一致性:事务在执行完成时,必须使所有的数据都保持一致状态
李> <李>隔离性:事务独立运行。多个事务之间相互隔离,互不干扰。事务的100%隔离,会牺牲速度
李> <李>持续性:事务执行完成之后,它对系统的影响是永久性的
李><强> MySQL的事务控制强>
在<强>默认情况>强下,MySQL是<>强自动提交强>事务的,即每一条插入、更新、删除的sql语句提交后会立即执行提交操作,因此,要开启一个事务,可以使用<强>开始事务强>或<强> 强>开始,或者将<强>自动提交强>的值设置为<强> 0 强>。
- <李>
方法一:
李> <李>方法二:
李><>强例子强>
- <李>
登陆数据库,使用学生数据库并查看所有的数据表
李>USE 学生;SHOW 餐桌;
CREATE TABLE bank_account ( id INT  NOT NULL AUTO_INCREMENT  PRIMARY 键, name VARCHAR (30), COMMENT & # 39;姓名& # 39;, balance 小数(18日,2),COMMENT & # 39;账户余额& # 39;);INSERT INTO bank_account (id,名称,平衡),价值(1,& # 39;张三& # 39;,,0);INSERT INTO bank_account (id,名称,平衡),价值(2,& # 39;李四& # 39;,,0);UPDATE bank_account SET balance =, balance +, 1000, WHERE id =, 1;
SELECT @@autocommit;
SELECT *,得到bank_account;
START 事务;UPDATE bank_account SET balance =, balance 作用;100年,WHERE id =, 1; UPDATE bank_account SET balance =, balance +, 100, WHERE id =, 2,提交;
SELECT *,得到bank_account;