目录
一、什么是事务?
就是将一组SQL语句放在同一批次去执行,如果一个SQL语句出错,则该批内的所有SQL都将被取消执行
事务的四大特性:
1.原子性:不可分割,要么全成功,要么全失败
2.一致性:事务开始前和事务结束后是一致的
3.隔离性:事务之间互不干扰
4.持久性:事务不管成功失败,在数据库中都永久保存
事务的操作:
1.关闭自动提交
SET AUTOCOMMIT = 0;
2.开启一个事务
START TRANSACTION;
3.一组sql语句
4.关闭
(1)提交
COMMIT
(2)回滚
ROLLBACK
5.开启原来的自动提交
SET AUTOCOMMIT = 1;
二、什么是脏读、幻读、不可重复读?
脏读:某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
幻读:在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的,会发现有新的“幻影” 行。
不可重复读:在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据,简单理解就是,一个事务在进行中读取到了其他事务对旧数据的修改结果。
事务隔离级别 | 脏读 | 不可重复读 | 幻读 |
读未提交 | 是 | 是 | 是 |
不可重复读 | 否 | 是 | 是 |
可重复读 | 否 | 否 | 是 |
可串行化 | 否 | 否 | 否 |