专栏文章索引:数据库
有问题可私聊:QQ:3375119339
目录
一、事务简介
事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
就比如
:
张三给李四转账
1000
块钱,张三银行账户的钱减少
1000
,而李四银行账户的钱要增加
1000
。 这一组操作就必须在一个事务的范围内,要么都成功,要么都失败。
正常情况
:
转账这个操作
,
需要分为以下这么三步来完成
,
三步完成之后
,
张三减少
1000,
而李四
增加
1000,
转账成功
:
异常情况
:
转账这个操作
,
也是分为以下这么三步来完成
,
在执行第三步是报错了
,
这样就导致张
三减少
1000
块钱
,
而李四的金额没变
,
这样就造成了数据的不一致
,
就出现问题了。
为了解决上述的问题,就需要通过数据的事务来完成,我们只需要在业务逻辑执行之前开启事务,执行完毕后提交事务。如果执行过程中报错,则回滚事务,把数据恢复到事务开始之前的状态。
注意: 默认 MySQL 的事务是自动提交的,也就是说,当执行完一条 DML 语句时, MySQL 会立即隐式的提交事务。
二、事务操作
数据准备:
drop table if exists account;
create table account(
id int primary key AUTO_INCREMENT comment 'ID',
name varchar(10) comment '姓名',
money double(10,2) comment '余额'
) comment '账户表';
insert into account(name, money)
VALUES ('张三',2000), ('李四',2000);