当前位置: 首页> 汽车> 行情 > MySQL笔记(八):事务

MySQL笔记(八):事务

时间:2025/7/13 14:57:38来源:https://blog.csdn.net/SSuperwoman/article/details/140967845 浏览次数: 0次

一、事务

事务用于保证数据的一致性,它由一组相关的dml组成,该组的dml语句要么全部成功,要么全部失败:转账。

事务和锁:当执行事务操作时(dml语句),mysql会在表上加锁,防止其他用户改表的数据

mysql数据控制台事物的几个重要操作

1、start transaction -- 开始一个事务
2、 savepoint 保存点名 --设置保存点
3、rollback to --回退事务
4、 rollback --回退全部事务
5、 comiit -- 提交事务,所有操作生效,不能回退

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

回退的过程中,会删除回退点之前的保存点

在这里插入图片描述


#讨论事务细节-- 1、如果不开始事务,默认情况下,dml操作是自动提交的,不能回滚INSERT INTO t27 VALUES(3,'milan');SELECT * FROM t27;-- 上一节rollback已经回退到开始事物的点了,所以只有新添加的一条数据-- 2、如果开始一个事务,你没有创建保存点,可以执行rollback,默认就是回退到事务开始的状态START TRANSACTIONINSERT INTO t27 VALUES(4,'kitty');INSERT INTO t27 VALUES(5,'scott'0:ROLLBACK;-- 表示直接回退到事务开始的状态,因为中途的dml操作没有设置保存点,只有开始状态的默认保存点-- 3、你也可以在这个事务中(还没有提交时),创建多个保存点,比如:savepoint
-- 执行dml,savepoint bbb-- 4、你可以在事务没有提交前,回退到任何一个保存点-- 5、innoDB存储引擎支持事务,myISAM不支持-- 6、开始一个事务:start transaction,   set autocommit=off

二、事务的隔离级别

(1)介绍

	多个连接开启各自事务操作数据库中数据时,数据库系统要负责隔离事务,以保证各个连接在获取数据时的准确性如果不考虑隔离性,可能会引发:脏读:dirty read,当一个事务读取另一个事务尚未提交的修改时,产生脏读不可重复读:nonrepeatable read, 同一查询在同一事务中多次进行,由于其他连接提交事务所做的**修改或删除,**每次返回不同的结果集,发生不可重复读幻读:phantom read 同一查询在同一事务中多次进行,由于其他连接提交事务所做的**插入**,每次返回不同的结果集,产生幻读

(2)四种隔离级别

在这里插入图片描述

1)设置隔离级别为读未提交
在这里插入图片描述

幻读现象:另一个控制台应该只能读到本控制台事务开始的情况,但是本控制台发生操作后,另一个控制台也能捕捉到,这是不行的。

在这里插入图片描述

2)改变隔离级别为读已提交:在插入一条数据后,另一个控制台看不到

在这里插入图片描述

3)可重复读

演示不可重复读

在这里插入图片描述
在这里插入图片描述

4)可串行化:当一个连接正在操作数据库,并且没有commit时,另一个连接无法查询;一提交就可以查了

在这里插入图片描述
在这里插入图片描述

(3)设置隔离

在这里插入图片描述

关键字:MySQL笔记(八):事务

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: