- 目录
- 1. 前言
- 2. 事务的四大特性
- 3. 三类数据读问题
- 3.1 Dirty Read(脏读):
- 3.2 Unrepeatable Read(不可重复读)
- 3.3 Phantom Read(幻读)
- 3.4 不可重复读和幻读的区别
- 4. 两类数据更新问题
- 4.1 第一类丢失更新(撤销覆盖)
- 4.2 第二类丢失更新(提交覆盖)
- 5. 隔离的级别
- 5.1 MySQL
- 5.2 Oracle
- 6. 事务实现步骤
- 7. 实战事务回滚案例
- 7.1 数据库结构
- 7.2 案例代码实战
- 8. 总结
1. 前言
要想实现PHP的事务操作,数据库表引擎必须要支持事务操作,必须是innoDB;系统是默认提交事务的,因此要关闭自动提交功能;为了方便开发,记录此篇。
代码分享:https://github.com/mtdgclub/PDO
具体查看根目录下的pdoAffair.php文件代码
2. 事务的四大特性
- 原子性:事务必须是一个不可分割的整体,要么做完,要么不做。
- 一致性:事务执行前和执行后来源和去向保持平衡,数据不会被破坏。
- 隔离性:并发时每个事务是隔离的,相互不影响。
- 持久性:事务一旦成功提交,就会永久保存到数据库中。
原子性是基础,隔离性是手段,持久性是目的,真正的老大就是一致性。