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 保存点名; -- 撤销保存点



posted @ 2022-03-14 21:53  aJream  阅读(25)  评论(0编辑  收藏  举报