MySQL:事务

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
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页