文章目录
-
- 1、创建一个名为chapter06的数据库
- 2、使用chapter06数据库
- 3、创建一个名为account的表
- 4、往表中插入数据
- 5、查询表中数据
- 6、开启一个事务然后通过update语句将a账户的100元钱转给b用户,最后提交事务。
- 7、查询表中余额
- 8、开启一个事务然后通过update语句将b账户的100元钱转给a用户
- 9、再查询表中余额
- 10、先退出MySQL数据库,再登录MySQL数据库,然后再使用chapter06数据库,在查询余额
- 11、开启一个事务然后通过update语句将b账户的100元钱转给a用户,然后使用commit语句来提交事务。
- 12、重新登录数据库然后再查询余额
- 13、开启一个事务,通过update语句将a账户的100元钱转给b账户。
- 14、然后查询A、B账户的金额;
- 15、从查询结果可以看出,a账户的100元钱转给b账户了,但是事务还没有提交,我们还可以执行事务回滚,操作如下:
- 16、查询A、B账户的余额
- 17、将b账户的隔离级别改为read uncommitted;
- 18、设置b账户事务隔离级别:
- 19、演示脏读:
- 20、在a账户中开启一个事务,并在当前窗口中执行转账功能,但不提交事务。
- 21、然后再查询余额信息
- 22将上一步开启的事务进行回滚
- 23、设置b账户中事务的隔离级别
- 24、验证是否出现脏读:
- 25、在a账户中开启一个事务,并在该事务中实现转账功能
- 26、再次查询各账户的余额信息。
- 27、演示不可重复读
- 28、在a账户中不用开启事务,直接使用update语句执行更新操作即可
- 29、查询a账户的余额
- 30、当a账户的更新语句完成后,查询b账户的余额
- 31、设置b账户中事务的隔离级别
- 32、验证是否出现不可重复读
- 33、幻读
- 34、演示幻读
- 35、验证是否出现幻读
- 36、可串行化
- 37、演示可串行化
1、创建一个名为chapter06的数据库
代码:
create database chapter06;
截图:
2、使用chapter06数据库
代码:
use chapter06
截图:
3、创建一个名为account的表
代码:
create table account(
-> id int primary key auto_increment,
-> name varchar(40),
-> money float
-> );
截图:
4、往表中插入数据
代码:
insert into account(name,money) values
-> ('a',1000),
-> ('b',1000);
截图:
5、查询表中数据
代码:
select * from account;
截图:
6、开启一个事务然后通过update语句将a账户的100元钱转给b用户,最后提交事务。
代码:
start transaction;
-> update account set money=money-100 where name = 'a';
-> update account set money=money+100 where name = 'b';
-> commit;
-> //
截图:
7、查询表中余额
代码:
select * from account;
-> //
截图:
8、开启一个事务然后通过update语句将b账户的100元钱转给a用户
代码:
start transaction;
-> update account set money=money+100 where name = 'a';
-> update a