[MySQL--基础]事务的基础知识

news2025/1/18 3:23:45

在这里插入图片描述

前言

⭐Hello!这里是欧_aita的博客。
⭐今日语录:生活中最重要的决定就是要做出决定。
⭐个人主页:欧_aita
ψ(._. )>⭐个人专栏:
数据结构与算法
MySQL数据库

在这里插入图片描述

在这里插入图片描述

事务的目录📕

  • 前言
  • 事务简介🚀
  • 事务操作🚀
    • 准备数据
    • 方式一
      • 查看/设置事务提交方式
      • 提交事务
      • 回滚事务
      • 演示
    • 方式二
      • 开启事务
    • 提交事务
      • 回滚事务
      • 演示
  • 事务四大特性(ACID)🚀
  • 并发事务问题🚀
  • 事务隔离级别🚀
    • 查看事务隔离级别
    • 设置事务隔离级别

事务简介🚀

事务是一组操作的集合,它是一个不可分割的操作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

在这里插入图片描述
举个例子,在银行转账的过程中,分为三步:

  • 第一步查询张三账户余额是否足够转账
  • 张三余额扣除相应数目
  • 李四银行账户余额增加相应数目

但是,如果在李四余额增加的过程中出现异常,则同时所有操作取消。
这个实例可以帮助我们有效理解事务。

默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句时,MySQL会立即隐式的提交事务。

事务操作🚀

准备数据

create table account(
    id int auto_increment primary key comment '主键ID' ,
    name varchar(10) comment '姓名' ,
    money int comment '余额'
)comment '账户表' ;
insert into account (id,name,money) values (null,'张三',2000),(null,'李四',2000);

方式一

查看/设置事务提交方式

SELECT @@autocommit;
SET @@autocommit;

提交事务

COMMIT;

回滚事务

ROLLBACK;

演示

1.目前账户状况
在这里插入图片描述
2.开始操作

-- 转账操作
-- 1.查询张三账户余额

select  * from account where name = '张三';

-- 2.将张三账户余额-1000

update account set money = money - 1000 where name = '张三' ;

-- 3.将李四账户余额+1000

update account set money = money + 1000 where name = '李四' ;

3.转账成功
在这里插入图片描述


以上是自动提交,接下来改一下提交方式,修改为手动提交

  1. 查看提交方式
select @@autocommit;

此时值若为1,就是自动提交
在这里插入图片描述

  1. 修改为手动提交
set @@autocommit = 0;  -- 设置为手动提交

此时若值为0,就是手动提交
在这里插入图片描述
3.开始转账操作

-- 转账操作
-- 1.查询张三账户余额

select  * from account where name = '张三';

-- 2.将张三账户余额-1000
给出一个异常
update account set money = money - 1000 where name = '张三' ;

-- 3.将李四账户余额+1000

update account set money = money + 1000 where name = '李四' ;

发现有异常,此时由于还没有提交,选择回滚事务后重写编写SQL语句再提交。原本的数据不会发生变化,在最后再使用提交。

-- 回滚事务
rollback;
-- 提交事务
commit;

方式二

开启事务

START TRANSACTION;

或者

BEGIN;

两者具有相同的作用

提交事务

COMMIT;

回滚事务

ROLLBACK;

演示

start transaction ;

-- 1.查询张三账户余额

select  * from account where name = '张三';

-- 2.将张三账户余额-1000

update account set money = money - 1000 where name = '张三' ;

chenxu
-- 3.将李四账户余额+1000

update account set money = money + 1000 where name = '李四' ;

-- 提交事务
commit;

-- 回滚事务
rollback;

事务四大特性(ACID)🚀

  • 原子性事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
  • 一致性事务完成时,必须是所有的数据都保持一致状态。
  • 隔离性数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
  • 持久性事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。

并发事务问题🚀

问题描述
赃读一个事务读到另一个事务还没有提交的数据
不可重复读一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
幻读一个事务按照条件查询数据时,没有对应的的数据行,但在插入数据时,又发现这行数据已经存在,好像出现了“幻影”。

事务隔离级别🚀

隔离级别赃读不可重复读幻读
Read uncommitted
Read committed×
Repeatable Read(默认)××
Serializable×××

从上向下,隔离级别越来越高,但是效率却越来越低。

查看事务隔离级别

SELECT @@TRANSACTION_ISOLATION;

设置事务隔离级别

SET [SESSION|GLOBAL] TRANSACTION ISOLATION LEVEL {READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1293894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【头歌系统Python实验】顺序与选择结构

目录 第1关:顺序结构 第2关:选择结构:if-else 第3关:选择结构 : 三元操作符 如果对你有帮助的话,不妨点赞收藏评论一下吧,爱你么么哒😘❤️❤️❤️ 第1关:顺序结构 …

批量AI写作生成器有哪些?免费的批量AI写作生成器

当今信息爆炸的时代,文案需求量庞大,传统文案写作已无法满足快速迭代的需求。批量AI写作生成器应运而生,成为许多行业的得力助手。在众多AI写作工具中,147原创助手以其批量AI写作功能和在各大平台显示原创首发的特性脱颖而出。本文…

大数据项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现

大数据项目——基于Django/协同过滤算法的房源可视化分析推荐系统的设计与实现 技术栈:大数据爬虫/机器学习学习算法/数据分析与挖掘/大数据可视化/Django框架/Mysql数据库 本项目基于 Django框架开发的房屋可视化分析推荐系统。这个系统结合了大数据爬虫、机器学…

redis-学习笔记(hash)

Redis 自身已经是 键值对 结构了 Redis 自身的键值对就是通过 哈希 的方式来组织的 把 key 这一层组织完成后, 到了 value 这一层, 还可以用 哈希类型 来组织 (简单的说就是哈希里面套哈希 [数组里面套数组 -> 二维数组] ) [ field value ] hset key field value [ field va…

C++刷题 -- 链表

C刷题 – 链表 文章目录 C刷题 -- 链表1.删除链表的倒数第 N 个结点2.链表相交3.环形链表 1.删除链表的倒数第 N 个结点 https://leetcode.cn/problems/remove-nth-node-from-end-of-list/ 快慢指针的应用 fast指针先移动N步,slow依然指向head;然后fa…

对Spring源码的学习:二

目录 SpringBean实例化流程 Spring的后处理器 Bean工厂后处理器 SpringBean实例化流程 Spring容器在进行初始化时&#xff0c;会将xml配置的<bean>的信息封装成一个BeanDefinition对象&#xff0c;所有的BeanDefinition存储到一个名为beanDefinitionMap的Map集合中去…

成品短视频app源码选择指南

作为一名有志于开发短视频app的创业者&#xff0c;选择合适的成品短视频app源码至关重要。一款优秀的成品短视频app源码可以帮助你节省开发时间&#xff0c;加速上线进程&#xff0c;快速实现盈利。但在众多的选择中&#xff0c;如何找到适合自己的成品短视频app源码呢&#xf…

商业案例实战:Python数据可视化之四象限图

1.四象限图的含义 四象限图是一种针对二维数据&#xff08;x&#xff0c;y&#xff09;的平面图形。二维数据&#xff08;x&#xff0c;y&#xff09;的两个维度垂直交叉在一起&#xff0c;分别构成四象限图的X轴及Y轴。两个维度所有样本的均值&#xff08;即x的均值和y的均值…

在 Docker 容器中运行 macOS:接近本机性能,实现高效运行 | 开源日报 No.96

cxli233/FriendsDontLetFriends Stars: 2.6k License: MIT 这个项目是关于数据可视化中好的和不好的实践&#xff0c;作者通过一系列例子解释了哪些图表类型是不合适的&#xff0c;并提供了如何改进或替代它们。主要功能包括展示错误做法以及正确做法&#xff0c;并提供相应代…

98基于matlab的在MIMO通信系统中功率优化算法的仿真

基于matlab的在MIMO通信系统中&#xff0c;功率优化算法的仿真&#xff0c;重点研究了注水功率分配算法。数据可更换自己的&#xff0c;程序已调通&#xff0c;可直接运行。 98matlab功率优化功率分配 (xiaohongshu.com)

2.1 网络编程-多用户通信系统(用户登录、拉取在线用户、无异常退出)

文章目录 一、多用户通信系统1.1 介绍1.2 公共类1.2.1 封装消息类1.2.2 用户类1.2.3 消息类型类1.2.4 控制台读取内容 二、用户登录2.1 客户端2.1.1 菜单界面 QQView2.1.2 验证用户UserClientService2.1.3 线程类 ClientConnectServerThread2.1.4 线程集合类 2.2 服务端2.2.1 服…

C++ - 函数重载和运算符重载

文章目录 1.函数重载2.运算符重载 1.函数重载 函数重载 (Overload)是 C 语言在C语言基础上新增的功能。函数重载能够在程序中使用多个同名的函数。是C多态的特征体现。 通过函数重载来设计一系列的函数&#xff0c;它们完成相同或者相似的功能&#xff0c;但使用不同的参数列表…

el-select的多选multible带全选组件二次封装(vue2,elementUI)

1.需求 Select 选择器 多选需要增加 全选 和 取消全选 功能&#xff0c;前端框架为vue2&#xff0c;UI组件为elementUI。 2. 代码 html部分 <template><el-tooltip effect"dark" :disabled"defaultValue.length < 0" :content"defaul…

Java网络编程,使用UDP实现TCP(一), 基本实现三次握手

简介&#xff1a; 首先我们需要知道TCP传输和UDP传输的区别&#xff0c;UDP相当于只管发送不管对方是否接收到了&#xff0c;而TCP相当于打电话&#xff0c;需要进行3次握手&#xff0c;4次挥手&#xff0c;所以我们就需要在应用层上做一些功能添加&#xff0c;如&#xff1a;…

QT作业1

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 头文件代码&#xff1a; #ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QIcon> #include <QLabel> //标签类 #include <QMovie> //动图类 #include <…

Linux操作系统一

一、Linux操作系统通俗认知 假设&#xff0c;我们现在正在做一家外包公司&#xff0c;我们的目标是把这家公司做上市。其中&#xff0c;操作系统就是这家外包公司的老板。我们可以把这家公司的发展阶段分为以下几个阶段&#xff1a; &#xff08;1&#xff09;初创阶段&#x…

查看Linux的Ubuntu的版本

我的Ubuntu版本是 Jammy x86_64&#xff0c;即 Ubuntu 22.04.3 LTS&#xff0c;代号为"Jammy Jellyfish"&#xff0c;架构是 x86_64&#xff08;64位&#xff09;。

微信小程序访问不了阿里云oss图片链接解决办法

以下都有可能导致访问不了oss图片 1.小程序没有加访问白名单 这个需要前端搞,加上白名单,如果是域名加域名白名单,ip的话加ip白名单 2.阿里云设置域名白名单 打开bucket列表,选择对应的bucket 配置这个白名单,配置好以后,开发者工具可以预览了,手机端预览不了,查看自己的路…

【遥感方向EI会议征稿中】第三届遥感与测绘国际学术会议(RSSM 2024)

第三届遥感与测绘国际学术会议&#xff08;RSSM 2024&#xff09; 2024 3rd International Conference on Remote Sensing, Surveying and Mapping 遥感与测绘技术&#xff0c;在全球变化、生态、环境、农、林、气象、人类活动等众多领域发挥了重要作用&#xff0c;受到世界各…

共创共赢|美创科技获江苏移动2023DICT生态合作“产品共创奖”

12月6日&#xff0c;以“5G江山蓝 算网融百业 数智创未来”为主题的中国移动江苏公司2023DICT合作伙伴大会在南京成功举办。来自行业领军企业、科研院所等DICT产业核心力量的百余家单位代表参加本次大会&#xff0c;共话数实融合新趋势&#xff0c;共拓合作发展新空间。 作为生…