数据库:事务

事务:

事务特征:

原子性:

不可再分,转账就是一个原子性操作,所有步骤全部成功或者全部失败

持久性:

转账成功,双方的金额会持久化的保存到存储设备中(数据库)

一致性:

转账之前和转账之后,数据总量不变,例如:张三向李四转账 500,转账之前(张三1000,李四1000),转账之后(张三500,李四1500)

隔离性:

事务A和事务B保持隔离

步骤:

1 开启事务
2 执行业务(此时是转账)
3 执行业务全部成功提交事务,否则回滚事务

-- 开启事务语法:   start transaction;
-- 提交事务语法:  commit;
-- 回滚事务语法:  rollback;  只有出现异常状态(catch块)才会执行回滚的操作

事务隔离级别

创建表

create table tb_account(
 id int(11) auto_increment,
 account_name varchar(30) not null,
 account_balance int(11) ,
 primary key (id)
)default charset=utf8mb4,engine=INNODB;

insert into tb_account(account_name,account_balance)values('czq',1000),('jjm',1000);

使用事务来管理转账,好处一旦转账出现异常操作,立马回滚

-- 读未提交  读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。
-- 开始是 500 1500
 -- set GLOBAL TRANSACTION ISOLATION LEVEL read UNCOMMITTED;
-- 读已提交  读提交,顾名思义,就是一个事务要等另一个事务提交后才能读取数据。
-- set global transaction isolation level read committed;
-- 可重复提交  重复读,就是在开始读取数据(事务开启)时,不再允许修改操作
-- 开始是 500 1500
set GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE read; 
-- 2 开启事务  
start transaction;
-- 3 执行转账
update tb_account set account_balance = account_balance-500 where id= 1;
-- 停电了
update tb_account set account_balance = account_balance+500 where id= 2;
-- 4 如果全部成功提交事务
commit;

打开另一个窗口


start transaction;
-- 执行select语句
select * from tb_account;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值