一、事务
1.1 什么是事务
要么都成功,要么都失败
将一组sql放入一个批次去执行
1.2 事务的特性
ACID : 原子性、一致性、隔离性、持久性
原子性:要么都执行,要么都不执行
一致性:最终一致性与过程一致性
隔离性:即排他性,多个事务之间不会相互影响
持久性:出现意外时,事务不提交,则恢复原状,提交了,则持久化到数据库,提交之后则不可逆
1.3 事务隔离导致的问题
1.3.1 脏读
一个事务读取了另一个事务未提交的数据
1.3.2 不可重复读这
一个事务中读取表同一行数据,多次读取的结果不同。这部一定是错误,只是某些场合不对
1.3.3 虚度或幻读
一个事务读取到别的事务插入的数据,导致前后读取不一致。
二、测试事务
2.1 简介
mysql 默认开启事务,可通过下面语句设置其状态:
set autocommit = 0; --关闭
set autocommit = 1; --开启
其他需要了解的:
savepoint pointname; --设置一个事务保存点
rollbakc to savepoint pointname; --回滚到指定事务保存点
release savepoint pointname; --删除指定事务保存点
2.2 手动事务
set autocommit = 0;
start transaction
**数据库操作**
commit;
set autocommit = 1;