MySQL事务详解

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL事务相关知识。

一、什么是事务

事务是数据库中一种常用的逻辑处理单元,它由一些相关性很强的SQL语句组成。将一些SQL语句写成事务之后,这些SQL语句要么全部执行成功,要么全部执行失败。不会因为MySQL数据库崩溃等意外情况而导致事务的部分SQL命令执行成功而部分SQL命令执行失败的情景。
事务在一些敏感事项的操作中非常有用。例如,银行账户的汇款场景中,假设A给B汇款500元,那么将A账户的余额减少500元和将A账户的余额增加500元这两个操作就可以并且应该写成一个事务,来保证这两个操作要么全部完成,要么全部不完成,防止出现某条SQL语句执行成功而另一条执行失败的情景。
MySQL中的事务必须满足4个条件,我们习惯性的将这4个条件简称为ACID:
1、原子性(Autmic)。 所谓原子性,就是指事务的SQL命令要么全部完成,要么全部不完成,不允许事务中的SQL命令部分执行的情景。
2、一致性(Consistency)。 所谓一致性,就是值事务必须使得数据库从一个状态转变到另一个状态,一致性的描述,从某种程度上而言,是原子性的另一个角度的描述。
3、隔离性(Isolation)。 所谓隔离性,是指当有多个事务并发执行的时候,事务之间的执行应该相互隔离,不能相互干扰,这些操作在MySQL中通过锁来实现。
4、持久性(Durability)。 所谓持久性,是指一个事务在提交后,对数据库中数据的改变是永久性的,其他的故障不应该对事务操作的数据有影响。

二、MySQL事务注意事项

MySQL数据库对于事务的处理,需要有以下注意点:
1、MySQL对于事务默认是自动提交的,即我们完成事务操作SQL命令后会自动执行,我们也可以通过设置autocommit参数,禁止事务自动提交功能。在禁止掉事务的自动提交功能后,事务在完成后,可以执行rollback回滚命令使得事务中的数据回到原来的状态,如果确定事务对数据的修改没有问题,就可以commit进行提交。
设置禁止事务自动提交功能命令如下:

set autocommit = 0 ;

如果将该参数设置为1,则会开启事务的自动提交功能。
2、MySQL数据库的事务执行与引擎密切相关,如果事务操作的数据表是MyISAM引擎,那么事务可以正常执行,但是不能够回滚,如果事务操作的是InnoDB引擎,那么在设置禁止自动提交后,事务可以正常回滚。
3、在定义MySQL事务时,由于中间会使用分号,因此需要使用delimiter命令修改MySQL的默认分隔符。

三、MySQL事务定义和示例

MySQL中定义一个事务格式如下:

start transaction;
【事务处理语句】

例如:

start transaction;
update bank set money=money-500 where name='A';
update bank set money=money+500 where name='B';
//

上述事务的执行结果如下:
在这里插入图片描述
事务执行完毕后,回滚如下:
在这里插入图片描述
从图中可以看出,如果我们正确使用了事务,可以利用回滚操作来撤销掉事务对数据库中数据的影响。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

永远是少年啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值