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

在这里插入图片描述

前言

⭐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.将张三账户余额-1000update account set money = money - 1000 where name = '张三' ;-- 3.将李四账户余额+1000update 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.将李四账户余额+1000update account set money = money + 1000 where name = '李四' ;

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

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

方式二

开启事务

START TRANSACTION;

或者

BEGIN;

两者具有相同的作用

提交事务

COMMIT;

回滚事务

ROLLBACK;

演示

start transaction ;-- 1.查询张三账户余额select  * from account where name = '张三';-- 2.将张三账户余额-1000update account set money = money - 1000 where name = '张三' ;chenxu
-- 3.将李四账户余额+1000update 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.rhkb.cn/news/212463.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

晶圆测试工艺介绍

第一章、晶圆测试简介 晶圆测试的方式,主要是通过测试机(事先编好程序)和探针台的联动,依靠探针卡的接触衔接,进行晶圆级的芯片测试。 当探针卡Probecard 的探针正确接触晶圆wafer 内一颗 芯片die的每个接触点bondpads…

ROS 动态坐标变换

在ROS 中,坐标变换是一个重要的概念,因为它允许系统中的不同节点和模块以统一的方式描述物体的位置和方向。 动态坐标变换指的是当机器人或其环境中物体的位姿(位置和姿态)发生变化时,能够实时更新这些信息的过程。 …

Leetcode—290.单词规律【简单】

2023每日刷题&#xff08;五十一&#xff09; Leetcode—290.单词规律 实现代码 class Solution { public:bool wordPattern(string pattern, string s) {unordered_map<char, string> m1;unordered_map<string, char> m2;stringstream stro(s);string tmp;for(a…

axios调接口传参特殊字符丢失的问题(encodeURI 和 encodeURIComponent)

1、axios调接口特殊字符丢失的问题 项目开发过程中遇到一个接口传参&#xff0c;参数带特殊字符&#xff0c;axios调接口特殊字符丢失的问题 例如接口&#xff1a; get/user/detail/{name} name是个参数直接调接口的时候拼到接口上&#xff0c;get/user/detail/test123#$%&am…

python socket编程6 - 使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的例子

使用PyQt6 开发UI界面实现TCP server和TCP client单机通讯的示例。 一、PyQt6 实现的界面 二、TCP server代码的修改示意 界面提供网络参数的配置&#xff0c;以及提供人机交互过程中的数据获取和显示。 1、把上面的server代码封装成两个部分 A、class Server 负责接受UI界面…

网络层之IP数据报格式、数据报分片、IPv4、子网划分和子网掩码

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

我有才打造知识付费小程序

一站式线上线下活动管理 为用户提供“精彩城市生活和人脉资源”。 在线活动提供创业、互联网、科技、投资、金融、教育、亲子、生活、聚会交友、医疗、设计、分享会、脱口秀、音乐演出等多种活动类型, 为职场白领提升技能、拓展人脉、聚会交友的首选平台。 为主办方提供“一…

Kubernetes(K8s)Pod控制器详解-06

Pod控制器详解 Pod控制器介绍 Pod是kubernetes的最小管理单元&#xff0c;在kubernetes中&#xff0c;按照pod的创建方式可以将其分为两类&#xff1a; 自主式pod&#xff1a;kubernetes直接创建出来的Pod&#xff0c;这种pod删除后就没有了&#xff0c;也不会重建 控制器创建…

⭐Unity 搭建UDP客户端(01) 配合网络调试助手测试

1.接收来自服务器的消息 using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using UnityEngine;public class UDPManager:MonoBehaviour {public string recvStr; //服务器返回值public string UDPClientAddRess "192.168.2.39&q…

活动回顾|德州仪器嵌入式技术创新发展研讨会(上海站)成功举办,信驰达科技携手TI推动技术创新

2023年11月28日&#xff0c;德州仪器(TI)嵌入式技术创新发展研讨会在上海顺利举办。作为TI中国第三方IDH&#xff0c;深圳市信驰达科技有限公司受邀参加&#xff0c;并设置展位&#xff0c;展出CC2340系列低功耗蓝牙模块及TPMS、蓝牙数字钥匙解决方案&#xff0c;与众多业内伙伴…

Sbatch, Salloc提交任务相关

salloc 申请计算节点&#xff0c;然后登录到申请到的计算节点上运行指令&#xff1b; salloc的参数与sbatch相同&#xff0c;该部分先介绍一个简单的使用案例&#xff1b;随后介绍一个GPU的使用案例&#xff1b;最后介绍一个跨节点使用案例&#xff1b; 首先是一个简单的例子&a…

Python----多态

1、什么是多态 多态指的是一类事物有多种形态。 定义&#xff1a;多态是一种使用对象的方式&#xff0c;子类重写父类方法&#xff0c;调用不同子类对象的相同父类方法&#xff0c;可以产生不同的执行结果。 ① 多态依赖继承 ② 子类方法必须要重写父类方法 首先定义一个父类…

单细胞seurat-细胞比例分析-画图详细教程

大家好&#xff0c;今天我们来画单细胞中最简单的细胞比例图~ 1.老规矩&#xff0c;先加载pbmc数据 dir.create("~/gzh/细胞比例") setwd("~/gzh/细胞比例")subset_datareadRDS("~/gzh/pbmc3k_final.rds") table(stringr::str_split(string c…

dockers安装rabbitmq

RabbitMQ: easy to use, flexible messaging and streaming — RabbitMQhttps://www.rabbitmq.com/ Downloading and Installing RabbitMQ — RabbitMQ docker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3.12-management 之后参照&#xff1a;dock…

有了安卓模拟器,就能在Windows 10或11上像使用安卓操作系统一样使用安卓

你可以使用Android模拟器在Windows 11或Windows 10中运行Android应用程序。如果你喜欢的应用程序只在手机上运行,但你想在电脑上使用,这些模拟器会很有用。 BlueStacks 与整个操作系统模拟器不同,BlueStacks只在Windows上模拟Android应用程序。它真的很容易使用,所以你不需…

【二叉树】

文章目录 树形结构注意要点细分概念树在生活中的应用 二叉树什么是二叉树二叉树特点&#xff1a;两种特殊的二叉树二叉树的性质二叉树性质的练习二叉树的存储二叉树的遍历前序遍历中序遍历后序遍历遍历练习 树形结构 树是一种非线性的数据结构&#xff0c;它具有以下的特点&am…

NLP自然语言处理学习笔记

参考&#xff1a;NLP&#xff08;自然语言处理&#xff09;介绍 - 知乎 (zhihu.com) 一、NLP是什么 自然语言处理( Natural Language Processing, NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自…

Thymeleaf生成pdf表格合并单元格描边不显示

生成pdf后左侧第一列的右描边不显示&#xff0c;但是html显示正常 显示异常时描边的写法 cellpadding“0” cellspacing“0” &#xff0c;td,th描边 .self-table{border:1px solid #000;border-collapse: collapse;width:100%}.self-table th{font-size:12px;border:1px sol…

css 十字分割线(含四等分布局)

核心技术 伪类选择器含义li:nth-child(2)第2个 lili:nth-child(n)所有的lili:nth-child(2n)所有的第偶数个 lili:nth-child(2n1)所有的第奇数个 lili:nth-child(-n5)前5个 lili:nth-last-child(-n5)最后5个 lili:nth-child(7n)选中7的倍数 border-right: 3px solid white;borde…

k8s中的Pod网络;Service网络;网络插件Calico

Pod网络&#xff1b;Service网络&#xff1b;网络插件Calico Pod网络 在K8S集群里&#xff0c;多个节点上的Pod相互通信&#xff0c;要通过网络插件来完成&#xff0c;比如Calico网络插件。 使用kubeadm初始化K8S集群时&#xff0c;有指定一个参数–pod-network-cidr10.18.0…