MySQL-事务

本文详细介绍了MySQL中的事务概念,包括创建表、事务操作(如STARTTRANSACTION、SAVEPOINT、COMMIT和ROLLBACK),以及事务隔离级别的概念,重点讲解了脏读、不可重复读和幻读现象,以及如何通过加锁来避免数据冲突。
摘要由CSDN通过智能技术生成

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

事务即细节

# 事务
 CREATE TABLE t27
	(id INT,
	`name` VARCHAR(32));

-- 开始事务
START TRANSACTION

-- 设置保存点
SAVEPOINT a

-- 执行dml操作
INSERT INTO t27 VALUES(100,'tom')
SELECT * FROM t27;

-- 设置保存点
SAVEPOINT b
INSERT INTO t27 VALUES(200,'jack')

-- 回退到b
ROLLBACK TO b

-- 继续回退到a
ROLLBACK TO a

-- 不写保存点就是回退所有
ROLLBACK

-- 如果commit了,就不能回退ab了,而且ab会被删除
COMMIT


-- 事务细节
-- 不开始事务自动提交,不能回滚
INSERT INTO t27 VALUES(300,'milan'); -- 自动commit
SELECT * FROM t27;

-- 如果开始一个事务但是没有保存点,可以rollback,回退到开始的状态
START TRANSACTION
INSERT INTO t27 VALUES(400,'milan');
ROLLBACK -- 回滚到只有300

-- 开始事务
START TRANSACTION   -- 或者写 set autocommit = off

事务隔离级别

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

# 事务隔离级别

-- 开两个mysql控制台
-- 查看当前MySQL隔离级别
SELECT @@tx_isolation; -- REPEATABLE-READ

-- 设置当前会话隔离级别 READ UNCOMMITTED
SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

-- 查看系统当前隔离级别
SELECT @@global.tx_isolation; -- REPEATABLE-READ

-- 设置系统当前隔离级别 READ UNCOMMITTED
SET GLOBAL TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

-- 脏读就是别人未提交的数据但可以查到
-- 不可重复读和幻读意思就是,假如你在使用数据集之前查询数据集只有一条数据
-- 你就按照一条数据的情况去做后续处理
-- 但由于别人对此数据集的操作,导致你后面再次查询数据集时候发生了改变
-- 也就是每次返回了不同的结果集
 
-- 加锁,就是当A操作但没有提交时,B操作时会卡住,等待A操作结束才能让B操作

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值