关于MySQL之事务的理解

本文介绍了数据库事务的基本概念,包括原子性、一致性、隔离性和持久性,通过存钱表的例子展示事务如何确保数据操作的正确性。重点讲解了如何在MySQL中开启、提交和回滚事务,以及为何使用事务来避免数据异常问题。
摘要由CSDN通过智能技术生成

事务

事务是数据库指令的集合,事务里面的指令要么同时成功,要么同时失败,有效地防止多条SQL语句执行时,其中一条出错,导致某些结果错误的局面。

事务的四大特性:原子性、一致性、隔离性、持久性

事务对表的操作是临时操作

  • 开启事务
 start transaction;
 或者 begin;
  • 提交事务

没有提交事务之前的数据操作都是临时操作,不会真正修改数据。

commit;
  • 回滚事务

数据操作出现异常,数据状态会回滚到开启事务之前

rollback;

例子:假如有一张存钱表,存储有A、B两人的钱金额,现在,A向B借500块钱,请用数据库语句完成操作。

							   存钱表
idnamemoney
1A1000
2B1000
#普通执行语句如下:
update 存钱表 set money = money-500 where name = 'B';//1
update 存钱表 set money = money + 500 where name = 'A';//2

#以上语句在正常执行情况下,结果会是 A的钱为1500,B的钱为500。
#若在执行2时或前发生异常,此时A的钱为1000,B的钱为500,那么结果就不是我们想要的了。
#所以使用 事务 可以对表进行临时操作,避免这个情况发生

#开启事务
begin;
update 存钱表 set money = money-500 where name = 'B';//1
update 存钱表 set money = money + 500 where name = 'A';//2

#若发生异常可用rollback回滚事务
#确认此操作的结果是我们想要的后,便可提交事务了
#提交事务
commit;

小贴士:MySQL每条语句都是一次事务,那么有人就会问,如果它是事务那我们怎么不用提交,就会改变数据库的数据呢?其实,MySQL的事务的提交是自动的,查看方法如图所示:

在这里插入图片描述
如果把提交方式改为手动提交,执行SQL语句时,不加commit提交事务,就会发现并没有真正修改数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值