数据库学习(三)---事务

事务

事务是一组操作,这组操作可能有多步,要么全部执行成功要么,全部不成功。在操作开始前需要开启事务,事务结束后需要提交事务,如果事务执行中间抛出异常,则进行事务回滚。(就是全部回到未执行事务操作之前)

事务操作

方式一
mysql的事务提交方式是自动的
SELECT @@autocommit

查看当前事务的提交方式
在这里插入图片描述
1----------------自动提交
0-----------------手动提交
set @@autocommit =0
手动设置使得自动提交变成手动提交
在这里插入图片描述
注意每次使用完sql语句后因为设置的是手动提交,所以你执行完sql语句不执行commit会出现,视图未发生变化的情况
commit
提交事务
事务中间出错可以不提交,直接执行回滚,再重新执行sql语句
执行回滚:
rollback

方式二
执行start就是需要你手动提交事务和回滚的
start transaction
开启事务
。。。。。执行事务操作
提交事务
回滚事务

事务的四大特性(ACID)

1.原子性:
事务是一组不可分割的最小操作单元
2.一致性
事务完成时,必须使所有的数据保持一致状态。
(转账操作中,俩人的总的钱数目是一定的,并不会因为我给你转了钱,银行少钱了。。。)
3.隔离性
若干个并发事务,A事务不影响B事务的操作
4.持久性
事务一旦提交或回滚,他对数据库的改变是持久的。(你事务操作后改变的数据将写入磁盘,永久保存)

并发事务问题

1.脏读
一个事务读取到另一个事务还没有提交的数据
来自b站黑马程序员ppt

2.不可重复读
一个事务先后读取同一条记录,但两次读取的数据不同。
图片来自b站黑马程序员ppt
3.幻影读
一个事务按条件查询时,没有对应的数据行,但是插入数据的时候,又发现这行数据好像已经存在,再去查发现有没查到。(第二次没查到是因为不可重复读导致的)
在这里插入图片描述

事务的隔离级别

在这里插入图片描述
查看事务的隔离级别:
SELECT @@transaction_isolation
在这里插入图片描述
设置事务的隔离级别
set session transaction isolation level read uncommitted

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值