MySQL_事务学习笔记

news2025/9/20 11:00:24

事务

  1. 注意:一定要使用 Innodb 存储引擎

  2. 概述:一组操作的集合,是不可分割的工作单元,会把一个部分当成一个整体来处理,事务会把操作同时提交或者是撤销。要么同时成功,要么同时失败。

  3. 比如:上云转账1000元给张三,第一,上云账户少1000,第二,张三账户多一千。
    在这里插入图片描述

事务操作

  1. 数据准备

    drop table if exists account; 
    #创建账户信息表
    create table account( 
    	id int primary key AUTO_INCREMENT comment 'ID',
    	name varchar(10) comment '姓名', 
    	money double(10,2) comment '余额' 
    ) comment '账户表'; 
    
    insert into account(name, money) VALUES ('上云',4000), ('张三',4000);
    

未控制事务演示

  1. 正常转账的情况下

    #正常转账的情况下
    select * from account;
    
    #减少上云账户上的1000元
    update account set money = money -1000 where name = '上云'; 
    #增加张三账户上的1000元
    update account set money = money + 1000 where name = '张三';
    

在这里插入图片描述

  1. 异常转账的情况下

    select * from account;
    
    update account set money = 4000;
    
    update account set money = money -1000 where name = '上云'; 
    
    出错了
    
    update account set money = money + 1000 where name = '张三';
    

控制事务方式1

  1. 查看事务提交方式

    SELECT @@autocommit
    
    
    1:自动提交
    0:手动提交
    
  2. 设置事务提交方式

    set @@autocommit=0;#设置成手动提交
    
  3. 提交事务

    commit;
    
  4. 回滚事务

    rollback;
    

控制事务方式2

  1. 开启事务

    start transaction 或者 begin;
    
  2. 提交事务

    commit;
    
  3. 回滚事务

    rollback;
    

事务的作用对象

  1. 只能回滚 insert、delete 和 update 语句,不能回滚 select(回滚 select 没有任何意义),对于
    create、drop、alter 这些无法回滚.

事务的四大特征(ACID)

  1. 原子性(Atomicity):整个事务中的所有操作,必须作为一个单元全部完成(或全部取消)不可分割,要么全部成功,要么全部失败
  2. 一致性(Consistency)事务完成时,数据保持一致状态
  3. 隔离性(Isolation):数据库会提供隔离机制,并发不会相互影响和干扰,一个事务不会影响其他事务的运行
  4. 持久性(Durability):在事务完成以后,该事务对数据库所作的更改将持久地保存在数据库之中,并不会被回滚。

并发事务的问题(面试经常问)

  1. 脏读:一个事务读到另外一个事务还没有提交的数据
    • 事务B读取到事务A还没有提交的数据
      在这里插入图片描述
  2. 不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。
    • 事务A两次读取同一条数据,但是读取到的数据不一样
      在这里插入图片描述
  3. 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 “幻影”。
    在这里插入图片描述

事务的隔离级别

在这里插入图片描述

  1. 注意:隔离级别越高,数据越安全,但是性能低。需要在性能和安全之间进行取舍。

  2. 查看隔离级别:

    SELECT @@TRANSACTION_ISOLATION;
    

    在这里插入图片描述

  3. 设置隔离级别

    SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }
    
    • 隔离级别分为全局的和会话级的

      • 全局的:对所有会话有效(global)
      • 会话级的:只对当前的会话有效(session)

      在这里插入图片描述

演示

  1. 脏读(read uncommitted 未提交读)

    会话1会话2
    use transaction;use transaction;
    set global transaction isolation level read uncommitted;
    start transaction;
    start transaction;
    insert into account values(2,‘sy’,100);
    select * from account;
    rollback;
    select * from account;
  2. read committed(已提交读)

    会话1会话2
    set global transaction isolation level read committed;
    start transaction;
    start transaction;
    insert into account values(2,‘sy’,100);
    select * from account;
    select * from account;(不能查询出数据)
    commit;
    select * from account;(查询出数据)
  3. repeatable read(可重复读)

    会话1会话2
    set global transaction isolation level repeatable read;
    start transaction;
    start transaction;
    insert into account values(3,‘xxxxy’,100);
    select * from account(读不出来)
    commit;
    select * from account(能读出来)

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

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

相关文章

汽车制造业上下游协作时 外发数据如何防泄露?

数据文件是制造业企业的核心竞争力,一旦发生数据外泄,就会给企业造成经济损失,严重的,可能会带来知识产权剽窃损害、名誉伤害等。汽车制造业,会涉及到重要的汽车设计图纸,像小米发送汽车设计图纸外泄事件并…

离线安装vscode插件,导出 Visual Studio Code 的扩展应用,并离线安装

在没有网络的情况下,如何安装vscode插件 1.使用之前电脑安装过的插件包 Visual Studio Code 的扩展应用安装位置在文件夹 .vscode/extensions 下。不同平台,它位于: Windows %USERPROFILE%\.vscode\extensions Mac ~/.vscode/extensions L…

AIRIOT出席IOTE生态行·北京物联网应用交流大会

8月8日,由物联传媒、IOTE物联展、AIoT库、AIoT星图研究院联合主办的IOTE生态行北京物联网应用交流大会圆满结束,超300位业界同行同台交流。 航天科技控股集团股份有限公司受邀参会,旗下AIRIOT物联网平台产品负责人段丽娜发表演讲,…

双向循环链表、dancing links

目录 双向循环链表 力扣 426. 将二叉搜索树转化为排序的双向链表 十字交叉双向循环链表(dancing links) 精确覆盖问题 dancing links X算法(V1递归版) POJ 3740 Easy Finding 数独 X算法优化 X算法(V2非递归…

使用Python爬取某查查APP端(Appium自动化篇)

1. 写在前面 某查查网站反爬虫风控还是较强的,之后会分别介绍一下PC端协议、APP端自动化、APP端接口协议三种采集方案。这里主要介绍APP端的自动化方式,APP端自动化方式需要登陆账号,协议的话需要签名授权(自动化经测试没有太多限…

生产事故-走近科学之消失的JWT

0x01 事故背景 2021年11月26日01时10分,P公司正在进行某业务系统的生产环境部署操作,但其实早在00时30分的时候,他们已经完成过一次部署了,但是奇怪的是无论如何都通不过验证,无奈只好推倒重来,如此反复了…

opencv实战项目 实现手势跟踪并返回位置信息(封装调用)

OpenCV 是一个基于 Apache2.0 许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。 需要提前准备opencv 和 mediapipe库 pip --default-timeout5000 install -i https://pypi.tuna.tsi…

腾讯云服务器使用教程_手把手图文详细介绍

腾讯云服务器使用教程包括注册账号实名认证、选择云服务器CVM或轻量应用服务器CPU内存带宽和系统盘配置、安全设置和云服务器远程连接、安全组端口开通教程、云服务器环境部署以搭建网站为例手把手网站上线,云服务器文件传输和数据备份以及技术支持等详细说明&#…

【Linux】用户和权限

文章目录 前言什么是 root 用户su 命令和 exit 命令sudo 命令为普通用户配置 sudo 认证 用户、用户组管理什么是Linux 用户和用户组用户组管理用户管理创建用户删除用户查看用户所属组将指定用户添加到指定用户组中 查看当前系统的用户和用户组 权限控制权限信息 修改权限控制修…

MyBatisX自动和数据库的字段关联

先下个插件 右键数据库,点MybatisX-Generator 在根据自己需求勾选 actual column:保证数据库的驼峰命名生效

第10集丨Vue 江湖 —— 表单输入绑定

目录 一、v-model1.1 基本用法1.2 值绑定1.3 修饰符1.3.1 .lazy1.3.2 .number1.3.3 .trim 二、总结2.1 案例2.2 效果 一、v-model 1.1 基本用法 功能&#xff1a; v-model指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件…

【人工智能前沿弄潮】——生成式AI系列:扩散模型及稳定扩散模型

VAE、GAN的出现&#xff0c;使得生成式AI越发火热&#xff0c;如今扩散模型的出现与兴起&#xff0c;更是将AIGC推到了人工智能风口&#xff0c;被视作如今人工智能生成艺术领域取得突破的主要因素。相较于VAE和GAN,扩散模型生成的图片质量更好。随着transformer架构的出现和pr…

Uniapp当中使用腾讯位置路线规划插件保姆教学

首先我们在使用腾讯地图插件之前我们需要先做几点准备 1&#xff1a;我们需要在腾讯地图位置服务当中注册账号以及在控制台当中创建应用和创建key 这里在创建应用当中应用类型一定要选出行类型&#xff0c;否则后期可能会出现问题。 我们创建完应用之后&#xff0c;点击创建…

elementUi表单恢复至初始状态并不触发表单验证

elementUi表单恢复至初始状态并不触发表单验证 1.场景再现2.解决方法 1.场景再现 左侧是树形列表&#xff0c;右侧是显示节点的详情&#xff0c;点击按钮应该就是新增一个规则的意思&#xff0c;表单内容是没有改变的&#xff0c;所以就把需要把表单恢复至初始状态并不触发表单…

线性代数(三) 线性方程组向量空间

前言 如何利用行列式&#xff0c;矩阵求解线性方程组。 线性方程组的相关概念 用矩阵方程表示 齐次线性方程组&#xff1a;Ax0&#xff1b;非齐次线性方程组&#xff1a;Axb. 可以理解 齐次线性方程组 是特殊的 非齐次线性方程组 如何判断线性方程组的解 其中R(A)表示矩阵A的…

Hugging News #0414: Attention 在多模态情景中的应用、Unity API 以及 Gradio 主题构建器

社区动向 Attention 在视觉领域的应用 注意力机制改变了许多学科的深度学习研究&#xff0c;从 NLP 开始扩展到视觉、语音等。注意力机制的使用在深度学习研究中变得越来越流行&#xff0c;理解和解释注意力机制的内部工作是至关重要的。 我们发布了一个教程&#xff0c;介绍…

面试官:前面我们聊了主从和哨兵,那今天来聊一聊集群吧

目录 秃顶面试官&#xff1a;简单介绍下什么是Redis Cluster呢? 秃顶面试官&#xff1a;那集群的缺点有哪些呢&#xff1f; 秃顶面试官&#xff1a;说说如何搭建集群呢&#xff1f; 秃顶面试官&#xff1a;集群内部是如何通信的呢&#xff1f; 秃顶面试官&#xff1a;线上…

three.js上传模型文件并加载显示

效果大概这样&#xff0c;这个宝箱模型是直接初始化就显示的&#xff0c;人物模型是自己本地添加上去的&#xff0c;代码如下。 <template><div class"container" ref"container"><el-row><el-col :span"24"><div c…

固态硬盘恢复数据,5步搞定!

“不知咋回事&#xff0c;我的固态硬盘突然就有问题了&#xff0c;很多重要的文件也一起丢失了。我正在很努力的解决这个问题&#xff0c;但可惜我对电脑的使用了解比较少&#xff0c;有没有电脑高手可以帮帮我呀&#xff1f; 固态硬盘&#xff0c;通常被称为SSD&#xff0c;它…

stable-diffusion 模型效果+prompt

摘自个人印象笔记&#xff0c;图不完整可查看原笔记&#xff1a;https://app.yinxiang.com/fx/55cda0c6-2af5-4d66-bd86-85da79c5574ePrompt运用规则及技巧 &#xff1a; 1. https://publicprompts.art/&#xff08;最适用于OpenArt 线上模型 https://openart.ai/&#xff09;…