MySQL事务
什么是事务
什么是事务,简单理解就是:要么都成功,要么都失败
比如:
a 转账给 b 100元
b 收到 a 的钱 100元
这两者应该:要么都成功,要么都失败
事务原则:ACID原则->【原子性、一致性、隔离性、持久性】
- 原子性:要么都成功,要么都失败
- 一致性:事务前后(时间上)数据完整性一致
- 持久性:事务一旦提交则不可逆
- 隔离性:多个用户操作一个数据库,数据库为每一个用户开启的事务,应该相互隔离,相互之间不能干扰
隔离导致的一些问题:
- 脏读:一个事务读取另一个事务未提交的数据
- 不可重复读:在一个事务内读取表中某一数据,多次读取结果不同
- 虚读(幻读):在一个事务内读取到其他事务插入的数据,导致前后读取不一致
事务执行
MySQL默认开启事务自动提交
手动处理事务:
set autocommit = 0 -- 关闭事务自动提交
start transaction -- 标记一个事务开始,从这句话后的sql都在一个事务内
/**
* 数据操作
*/
-- 提交:持久化(成功)
commit
-- 回滚:回到原来样子(事务失败)
rollback
-- 事务结束
set autocommit = 1 -- 恢复自动提交
savepoint 保存点名 ; -- 设置事务保存点
rollback to savepoint 保存点名 ; -- 回到事务保存点
release savepoint 保存点名; -- 撤销保存点
本文来自博客园,作者:aJream,转载请记得标明出处:https://www.cnblogs.com/ajream/p/16006241.html