概念:
逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全部成功,要么全部失败。
MySQL操作事务案例:
操作步骤:

  1. 开启事务
    1. start transaction
  2. 提交事务
    1. commit
  3. 回滚事务
    1. rollback ```sql — 转账案例 — 环境 create table account( name varchar2(100), money double ) insert into account values(“小张”, 10000.00); insert into account values(“小李”, 10000.00);

— 操作步骤 start transaction; update account set money = money - 1000 where name = ‘小张’; update account set money = money + 1000 where name = ‘小李’; commit; ```

事务四大特性

  1. 原子性
    1. 不可分割
  2. 一致性
    1. 数据保持一致
  3. 隔离性
    1. 不受到其他事务的干扰
  4. 持久性

    1. 结束之后,数据持久化到数据库中

      事务隔离级别

      如果不考虑隔离性,会引发的问题:
  5. 脏读:一个事务读到另一个事务未提交的数据。

  6. 不可重复读:一个数据读到另一个数据已提交的update数据,导致查询结果不一致。
  7. 虚读/幻读:一个数据读到另一个数据已提交的insert数据,导致查询结果不一致。

解决方式:
设置事务隔离级别:

  1. read uncommitted:脏读、不可重复读、虚读都有可能发生。
  2. read committed:避免脏读,虚度和不可重复读有可能发生。
  3. repeatable read:避免脏读和不可重复读,虚读有可能发生。
  4. serializable:避免脏读、不可重复读、虚读。

设置事务隔离级别:
set session transaction isolation level 隔离级别
查看事务隔离级别:
select @@tx_isolation