MySQL:事务

本文详细介绍了数据库事务的概念及其ACID原则,并通过银行转账的例子说明了事务的重要性。同时,文章还讲解了如何在MySQL中进行事务操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4.事务

4.1什么是事务

什么是事务,我们可以举一个简单的例子,银行转账问题

银行转账分为两步:

  1. a转账给b
  2. b收到a的转账

这两步其实是两个sql语句:

  1. 用sql语句将数据库中账户表中a的钱减去一些
  2. 用sql语句将数据库中账户表中b的钱加上一些

我们可以知道,只有当上面两步都完成才能完成转账这个操作,如果其中一个失败,都会导致一些问题,例如两个账户的总和多了一些钱或者少了一些钱,所以这两步要么都成功,要么都失败。我们把类似银行转账这样的操作称为事物。

事物的原则 ACID

原子性(Atomicity):事物这个操作是原子操作,要么都成功,要么都失败

一致性(Consistency):事物操作前和操作后,事物的状态一致。例如转账时前的总和不变

隔离性(Isolation):不同事物间不会相互影响

持久性(Durability):事务结束后的数据不随着外界的原因导致数据丢失。事务没有提交,恢复到元状;事务提交,持久化到数据库,不可逆了。

隔离导致的一些问题:

脏读:指一个事物读了另一个事务未提交的数据

不可重复读:在有一个事务内读取表中的某行数据,多次读取数据结果不同。

虚读:是指在一个事务内读取到了别的事物插入的数据,导致前后读取不一致

执行事务

--mysql默认开启事务自动提交的
set autoconmmit=0 --关闭
set autoconmmit=1 --开启
--事务执行步骤
        --1.关闭自动提交
        set autoconmmit=0 --关闭
        --手动开启事务
        --2.开启事务
        start transaction

        insert语句1
        insert语句2
        insert语句3
        
        --3.提交
        commit
        --4.回滚
        rollback
        --5.事务结束
        set autocommit=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值