mysql之事务

事务原则

  • 原子性

    要不成功,否则失败

  • 一致性

    事务前后的数据完整性要一致

  • 持久性

    事务一旦提交不可逆

  • 隔离性

    事务的隔离性,多个用户并发访问数据库时,数据库会为每个用户开启事务,不能被其他事务的操作数据所干扰。

隔离性所导致的问题

  • 脏读:

一个事务读取到了另一个事务未提交的数据

  • 不可重复读取

在一个事务内读取某一行的数据,多次读取的结果不通(不一定错误,只是场合不对)

  • 虚读

一个事务内读取到了别的事务插入的数据,导致前后读取不一致

事务

  • mysql是默认开启事务自动提交的

set autocommit = 0 /*关闭*/
set autocommit = 1 /*开启*/
  • 模拟mysql事务完整性

set autocommit = 0 /*关闭自动提交事务,手动处理事务*/
--事务开启
start transaction --标记一个数据的开始,之后的sql会在一个事务中

insert into XX
update XX set
delete from XX

--提交:持久化(成功!)
commit;

---回滚:回到之前的样子(失败!)
rollback;

--事务结束
set autocommit = 1 /*开启自动提交*/


--事务比较长可以设置一个事务的保存点
savepoint 保存点名称  
--回滚到保存点
rollback to savepoint 保存点名称
--删除保存点
release savepoint 保存点名称

 

posted @ 2021-08-18 23:01  深夜暗月  阅读(34)  评论(0)    收藏  举报