MySQL——事务(错误修正)
是什么
必须被原子地执行的一个或多个数据库操作的集合,事务用于保证数据的一致性。
当执行事务操作时,mysql会在表上加锁,防止其他操作对表进行修改。
事务的特性ACID
原子性Atomicity
一致性Consistency
隔离性Isolation
持久性Durability
事务操作
-- 开始事务
START TRANSACTION
-- 设置保存点
SAVEPOINT a
-- dml操作
SAVEPOINT b
-- dml操作
ROLLBACK TO b
-- 回退全部事务
ROLLBACK
-- 确认事务变化、结束事务、删除保存点、释放锁
COMMIT
使用commit语句结束事务后,其他连接将可以查看到事务变化后的新数据。(隔离级别)
细节:
1、不开启事务,DML操作是自动提交的,不能回滚。
2、开启事务,没有创建保存点,执行rollback直接回退到事务开始的状态。
3、mysql的事务机制需要InnoDB的存储引擎才可以使用,MyISAM不好使。
隔离级别
事务隔离,保证各个连接在获取数据时的准确性。
1、读未提交:
允许事务读取还没提交的事务变更。
2、读已提交:
允许事务读取已提交的事务变更。
3、可重复读:
允许事务读取其他事务已提交的新插入变更。
4、可串行化:
最高隔离级别,事务串行执行。

MySQL执行SQL语句发现有其他事务在操作同一数据表,则当前事务的SQL语句执行会阻塞等待。
事务执行可能遇到的问题
1、脏读:
一个事务读取到了另一个事务尚未提交的增删改。
2、不可重复读:
一个事务两次查询同一数据,由于另一事务对该行数据提交了删改,得到了不同的结果。
3、幻读:
一个事务两次查询同一数据,由于另一事务对该行数据提交了插入操作,得到了不同的结果。

浙公网安备 33010602011771号