事务的基本要素(ACID)
1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。
2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。
3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。
4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。
因为有多个事务,各个事务之间有没有影响呢?所以就有了隔离级别。

而且不同的隔离级别,是有不同的问题。 遇到的问题就是:

mysql默认的事务隔离级别为repeatable-read;
我们先创建一个表:

select @@tx_isolation;
我们首先查询出一条数据 select num from user where id=1;

当前mysql数据库事务的隔离级别是 可重复读,他遇到的问题是幻读,但是不会出现脏读,不可重复读;
一个事务读到了另一个事务还没有提交的东西;
演示: 我们开启两个事务,就是两个客户端A和B,相当于两个事务

A客户端开启事务,并且修改数字,但是不进行提交

我们用A客户端查询,发现在当前客户端已改

然后使用B客户端进行查询

发现没有改,我们在A客户端进行提交,

在B客户端进行查询

说明在当前的mysql数据库,没有脏读问题,因为一个事务改变了数据,没有提交的情况下,其他事务是不可能读取到还没有提交的数据