事务的属性一个或一组sql语句组成的一个执行单元,这个执行单元里面的sql要么都执行,要么都不执行
- 原子性
原子性指事务时一个不可分割的工作单位,事务中的操作要么都执行要么都不执行
- 一致性
从一个正确的状态,迁移到另一个正确的状态.什么叫正确的状态呢?就是当前的状态满足预定的约束就叫做正确的状态.
- 隔离性
事务的隔离性是指一个事务的执行不能被其他事务干,即一个事务内部的操作以及使用的数据对并发的其他事务时隔离的,并发执行的各个事务之前互不干扰
- 持久性
事务一旦提交,它对数据库中的数据的改变就是永久性的
事务的创建
- 隐式事务:
事务没有明显的开启和结束的标记,例如insert,update,delete语句
- 显式事务:
前提是先关闭自动提交(当前会话有效):set autocommit = 0
步骤一:开启事务
start transaction;
步骤二:编写事务中的sql语句(select,insert,update,delete)
第三步:提交或者回滚
提交 commit 回滚 rollback
事务并发情况下没设置隔离级别产生的问题
- 脏读
对于两个事务T1、T2,T1读取了已经被T2更新但还没提交的字段之后,若T2回滚,T1读取的内容就是临时且无效的
- 不可重复读
对于两个事务T1、T2,T1读取了一个字段,然后T2更新了该字段之后,T1再读取一次该字段,值不相同
- 幻读
对于两个事务T1、T2,T1从一个表中读取了一个字段,然后T2再在该表中插入一些新数据,之后T1再次读取同一个表,就会多出几行
事务的隔离级别
一个事务于其他事务隔离的程度成为隔离级别。数据库规定了多种事务隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性就越高,但是并发性能越弱



