1 . 事务的简介
事务是一组操作的集合 ,它是一个不可分割的工作单位 ,事务会把所有的操作作为一个整体一起向系统提交或者撤销操作请求 ,即这些请求要么同时成功,要么同时失败。
例:
上述三个情况就需要看成一个整体--事务,即要么三个情况全部成功,要么三个情况全部失败。
2. 事务操作
现在每条语句都是一个事务,且都是自动提交的,即如果中间出现错误,第一条事务语句还是会执行,即张三的钱-1000,而李四的前并没有+1000
2 . 1 第一种方式:
- 设置事务提交方式为手动提交(set @@autocommit = 0)
- 设置后,执行任何一条 SQL 语句 ,都需要执行该 commit 指令进行提交。
- 如果执行时出现错误 ,即可执行 rollback 指令进行事物回滚 ,从而保证数据的完整性和准确性。
2 . 2 第二种方式:
- 开启事务(start transaction / begin)后 ,后续操作跟第一种一样。
- 设置后,执行任何一条 SQL 语句 ,都需要执行该 commit 指令进行提交。
- 如果执行时出现错误 ,即可执行 rollback 指令进行事物回滚 ,从而保证数据的完整性和准确性。
3 . 事务四大特性:
4 . 并发事务问题:
脏读:
一个事务读到另一个事务还没有提交 commit 的数据
不可重复读:
同一个事务前后两次查询到的数据不一样 ,第二次查询到修改后的数据(有另一个事务对数据进行了修改)【解决了不可重复读问题后,应该是进行一次提交后,再查询,才能查到修改后的数据】
幻读:
一个事务查询时,没有该条数据 ,在另一个事务插入后,该事务想要插入的时候,会报错 ,但该事物再查询时 ,该条数据还是不存在。解决幻读问题后 ,一个事务在查询时,没有该条数据 ,另一个事务想插入, 但会报错 ,不能插入 ,等该事务提交后,另一个事务才能进行 。
5 . 事务的隔离级别(解决并发事务所引发的问题)
- 打对号的是还会出现的
- 从上往下 ,性能逐渐降低 ,但数据安全性逐渐升高