MySql学习-事务

学习参考https://www.bilibili.com/video/BV1Kr4y1i7ru?spm_id_from=333.999.0.0​​​​​​​

目录

一.事物操作

        1.查看事务提交方式

        2.提交事务

        3.回滚事物

         4.开启事务

二.事物四大特性

三.并发事物问题

四.事物隔离级别

        (1) read uncommit

        (2) read commit

        (3)repeatable read

        (4)serializable


一.事物操作

elect*from account where name = '张三';
update account set money = money-1000 where name = '张三';
update account set money = money+1000 where name = '李四';

        1.查看事务提交方式

select @@autocommit;

1是自动(TRUE)

set @@autocommit = 0;

在执行

select*from account where name = '张三';
update account set money = money-1000 where name = '张三';
update account set money = money+1000 where name = '李四';

表中的内容自己发生了改变

2是手动(FALSE)

        2.提交事务

commit;

事物手动提交,表面修改了数据库的数据,实际并没有,此时还需要commit手动提交

        3.回滚事物

rollback;

         4.开启事务

start transaction;

二.事物四大特性

三.并发事物问题

四.事物隔离级别

用于解决并发事物问题

select @@transaction_isolation;

set session transaction isolation level read uncommitted;

        (1) read uncommit

读取到了未提交的事务,账读 

        (2) read commit

 

成功解决账读问题。

 

同一个事务里查出不同的结果,出现不可重复读问题

        (3)repeatable read

读取到的是未修改前的数据,即使右侧已经提交了事务。

将左侧事务提交后才能读到被修改后的数据 

解决了不可重复读问题。

幻读问题,在右侧插入id = 3 的数据的情况下,左侧无法读取到这个修改,但是要插入的时候发现已经有了,出现幻读问题 

        (4)serializable

 右侧事务要插入数据,要等待左侧事务提交后才能插入成功,否则阻塞

解决了幻读问题。

(跟操作系统解决并发问题的操作一模一样)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉更爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值