事务的四大特性ACID如下:
原子性:事务中的所有操作,要么全部完成,要么不做任何操作,不能只做部分操作。如果在执行的过程中发了错误,要回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过。
事务的四大隔离级别如下:
一、读未提交。(A事务能够读取到B事务对数据的增删改操作)
该事务级别会出现脏读问题。
二、读已提交。(该事务级别不会出现脏读问题)
只要一个事务A提交了,那么事务A中对数据库表的增删改操作,都会直接反映到事务B上,因此事务B中可以查看到最新的数据。
三、可重复读。(解决了不可重复读,即其他事务的提交,在该事务中看不见,也就是select时,别的事务提交不会影响select语句的结果,但是因为别的事务已经提交了,所以在数据库中是真实存在的,只是在该事务中给屏蔽了一眼,相当于障眼法,如果此时针对别的事物的插入的数据做修改删除操作,那么会起到实际作用的,但是如果新增一条和别的事务插入的记录有违反唯一约束的,那么新增会失败。如果其他事务更新了数据,那么在本事务中不可见,)
测试如下:
1、
(1)开启两个会话A和B,并设置两个会话的数据库隔离级别为可重复读。
(2)在两个会话中分别开启两个事务A和事务B,然后分别查询同一张表user,结果如下。