目录
1.作用范围
mysql事务主要用于处理操作量大 复杂度高的数据
2.特点
原子性 事务是一个整体 都发生或都不发生
一致性 事务开始前结束后 数据库完整性没被破坏
隔离性 并发环境下 不同事务同时操控同一数据时 每个事务都有独立空间
持久性 事务完成后 事务对数据库的更改永久保存 不回滚
3.隔离级别
read uncommitted 读取尚未提交的数据 不解决脏读
read committed 提交读 可解决脏读
repeatable read 可重复读 可以解决脏读 不可重复读(mysql默认可重复读)
serializable 串行化 可以解决 脏读 不可重复读 虚读
### 脏读 读取未提交数据 脏读指的是读到了其他事务未提交的数据 未提交意味着这些数据可能会回滚 也就是可能最终不会存到数据库中 也就是不存在的数据
不可重复读 前后多次读取 数据内容不一致 一个事务内两个相同的查询却返回了不同数据
幻读 前后多次读取,数据总量不一致 一个事务对一个表中的数据进行了修改 这种修改涉及到表中的全部数据行 另一个事务也修改这个表中的数据 这种修改是向表中插入一行新数据 那么 操作前一个事务的用户会发现表中还有没有修改的数据行 就好象发生了幻觉一样
4.控制语句
begin 开启
commit 提交
rollback 回滚
savepoint s1或savepoint 允许创建回滚点
5.案例
查询全局事务隔离级别
查询会话事务隔离级别
设置全局事务隔离级别
设置会话事务隔离级别
创建表
测试提交事务
1 减100
保存
重新进入 测试
测试回滚事务
1 加100
回滚
重新进入 测试
测试多点回滚
1 加100 设置为第一个回滚点
2 加100
插入一个3
回到回滚点
使用 set 设置控制事务
禁止自动提交(autocommit=0)
测试