MYSQL[3]—事务

一、事务

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
两次操作后总和等于0,减500,加500,不能加1000
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

show variables like '%tx_isolation%';

在这里插入图片描述
在这里插入图片描述
开始balance=450
查询隔离级别:
show variables like ‘%tx_isolation%’;
设置隔离级别为脏读:
set SESSION TRANSACTION ISOLATION LEVEL read UNCOMMITTED; 一个session中:
开启事务
start TRANSACTION
修改字段值:
update account set balance = balance -50 where id = 1
另外一个session中查询
select * from account (返回400)
然后回到第一个session中 回滚事务 ROLLBACK,然后查询字段已经变成450
在第二个session中 执行
update account set balance = balance -50 where id = 1 查询结果还是 400(正常应该是350)
在这里插入图片描述
查询事务隔离级别:
show variables like ‘%tx_isolation%’;
设置隔离级别为不可重复读:
set SESSION TRANSACTION ISOLATION LEVEL read committed;
一个session中
开启事务:
start TRANSACTION
修改balance 的值
update account set balance = balance -50 where id = 1
另外一个session中查询 (数据并没改变)
select * from account
回到第一个session中 提交事务 commit
在第二个session种中
select * from account (数据已经改变)
在这里插入图片描述
show variables like ‘%tx_isolation%’;
set SESSION TRANSACTION ISOLATION LEVEL repeatable read;
一个session中
start TRANSACTION
update account set balance = balance -50 where id = 1
另外一个session中查询 (数据并没改变) select * from account
回到第一个session中 提交事务 commit
在第二个session种
select * from account (数据并未改变)【这里是可重复度和读已提交的区别】
在这里插入图片描述
account 表有3条记录,业务规定,最多允许4条记录。
1.开启一个事务
begin
select * from account 发现3条记录

2.开启另外一个事务
begin
select * from account 发现3条记录 也是3条记录
insert into account VALUES(4,‘deer’,500)

查询 4条记录
select * from account

3.回到第一个session
insert into account VALUES(5,‘james’,500)
select * from account 4条记录

4.session1 与 session2 都提交事务
在任何一个session中查询时发现有5条记录
设置隔离级别为串行化
set SESSION TRANSACTION ISOLATION LEVEL serializable;
重新执行上面的测试发现插入第五条数据时报错
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
show variables like ‘%autocommit%’; 自动提交事务是开启的
set autocommit=0;
insert into testdemo values(5,5,5);
savepoint s1;
sert into testdemo values(6,6,6);
savepoint s2;
nsert into testdemo values(7,7,7);
avepoint s3;
select * from testdemo
rollback to savepoint s2 rollback
重新查询时发现记录知道6,6,6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值