概念:
逻辑上的一组操作,组成这组操作的各个逻辑单元,要么全部成功,要么全部失败。
MySQL操作事务案例:
操作步骤:
- 开启事务
- start transaction
- 提交事务
- commit
- 回滚事务
- 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; ```
事务四大特性
- 原子性
- 不可分割
- 一致性
- 数据保持一致
- 隔离性
- 不受到其他事务的干扰
持久性
脏读:一个事务读到另一个事务未提交的数据。
- 不可重复读:一个数据读到另一个数据已提交的update数据,导致查询结果不一致。
- 虚读/幻读:一个数据读到另一个数据已提交的insert数据,导致查询结果不一致。
解决方式:
设置事务隔离级别:
- read uncommitted:脏读、不可重复读、虚读都有可能发生。
- read committed:避免脏读,虚度和不可重复读有可能发生。
- repeatable read:避免脏读和不可重复读,虚读有可能发生。
- serializable:避免脏读、不可重复读、虚读。
设置事务隔离级别:
set session transaction isolation level 隔离级别
查看事务隔离级别:
select @@tx_isolation
