学习笔记:数据库——事务
1.内容:
基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。
2.实现
源码
-- 开启事务
START TRANSACTION;-- 插入一条订单记录(客户ID为10002)
INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获取生成的订单号
SET @order_id := LAST_INSERT_ID();-- 插入第1条订单项(A003)
INSERT INTO orderitems (o_num, o_item, f_id, quantity, item_price)
VALUES (@order_id, 1, 'A001', 2, 5.99);-- 设置保存点S1
SAVEPOINT S1;-- 插入第2条订单项(A002)
INSERT INTO orderitems (o_num, o_item, f_id, quantity, item_price)
VALUES (@order_id, 2, 'A002', 1, 3.50);-- 设置保存点S2
SAVEPOINT S2;-- 插入第3条订单项(A001)
INSERT INTO orderitems (o_num, o_item, f_id, quantity, item_price)
VALUES (@order_id, 3, 'A003', 5, 4.20);-- 设置保存点S3
SAVEPOINT S3;-- 回滚到保存点S2(撤销A001插入)
ROLLBACK TO S2;-- 提交事务,最终只保留 A003 和 A002 两条记录
COMMIT;-- 查询确认结果
SELECT * FROM orderitems WHERE o_num = @order_id;
运行测试结果截图:
事务rollback TO S2之前 缓冲区的orders表格:
事务rollback TO S2之后 缓冲区的orders表格:
解释原因:
具体执行顺序如下:
1.插入订单主表数据(orders),生成订单号
2.插入三条订单明细(orderitems):分别为 A001、A002 和 A003;
3.每插入一条订单项后设置一个保存点(S1、S2、S3);
4.执行 ROLLBACK TO S2,表示撤销从保存点 S2 之后的所有操作,也就是撤销了 A003 的插入;
5.执行 COMMIT 提交事务,此时数据库中只保留在 S2 之前成功执行的操作:A001 和 A002。
之所以插入的 A001 数据没有被提交,是因为它发生在保存点 S2 之后,回滚到 S2 时被撤销了。回滚不会影响 S2 之前已执行的 SQL 语句。
2.实验中产生的错误及原因分析
在使用 ROLLBACK TO 保存点 时,曾出现“保存点回滚后数据异常”的情况。
原因在于误将 SAVEPOINT 放在 INSERT 语句之前,导致即使回滚也不会撤销之后的插入操作。
调整语句顺序为“插入后设置保存点”后,回滚行为符合预期,成功撤销了指定操作。
相关文章:

学习笔记:数据库——事务
1.内容: 基于现有数据库设计检查点实验,观察比较提交前后执行结果并分析。 2.实现 源码 -- 开启事务 START TRANSACTION;-- 插入一条订单记录(客户ID为10002) INSERT INTO orders (o_date, c_id) VALUES (NOW(), 10002);-- 获…...
C++命名空间、内联与捕获
命名空间namespace 最常见的命名空间是std,你一定非常熟悉,也就是: using namespace std;命名空间的基本格式 注意,要在头文件里面定义! namespace namespace_name{data_type function_name(data_type parameter){data_type result;//function contentreturn result;}…...

UE5 Daz头发转Blender曲线再导出ABC成为Groom
先安装Daz to Blender Import插件 【神器】 --DAZ一键导入blender插件的详细安装和使用,自带骨骼绑定和控制器,多姿势动画,Importer桥接插件_哔哩哔哩_bilibili 然后安装DAZHairConverter插件 一分钟将DAZ头发转化成Blender粒子毛发_哔哩哔…...
【进阶】C# 委托(Delegate)知识点总结归纳
1. 委托的基本概念 定义:委托是一种类型安全的函数指针,用于封装方法(静态方法或实例方法)。 核心作用:允许将方法作为参数传递,实现回调机制和事件处理。 类型安全:委托在编译时会检查方法签…...

【贪心算法】贪心算法四
贪心算法四 1.最长回文串2.增减字符串匹配3.分发饼干4.最优除法点赞👍👍收藏🌟🌟关注💖💖 你的支持是对我最大的鼓励,我们一起努力吧!😃😃 1.最长回文串 题目链接: 409. 最长回文串 题目分析: 给一个包含大小字母的字符串,从里面挑选出来一些字母构成一个…...
【漫话机器学习系列】240.真正类率(True Positive Rate,TPR)
理解真正类率(True Positive Rate,TPR):公式、意义与应用 在机器学习与深度学习模型评估中,"真正类率"(True Positive Rate,简称TPR)是一个非常重要的指标。TPR反映了分类…...

Linux的基础开发工具
目录 前言: 1、包管理器yum 1.1 软件包的依赖 1.2 镜像源 1.3 查找/安装/卸载软件 2、编辑器vim 2.1 命令模式(默认) 2.1.1 撤销与反撤销 2.1.2 光标定位 2.1.3 复制&&剪切(删除)&&粘贴 2.1.4 替换 2.1.5 插入模式 2.1.6 V-Block模式 …...

【Electron】electron-vue 借助 element-ui UI 库助力桌面应用开发
前面文章我们讲过 electron 让可以用 HTML、JS、CSS 开发桌面应用程序。而 electron-vue 是一个结合了 electron 与 vue 的套件。这样我们就能方便地使用 vue 快速开发桌面应用。但是,vue 只是在 js 这层面做了大量的便捷的操作。对 UI 并未过多涉及。此时如果您在开…...

Linux基础(最常用基本命令)
1.查看文件ls 1.1 格式 ls 选项 参数,如:ls -lah ~/ 1.2 选项设置: -l:list 以列表方式显示文件 -h:human-readable 以人类可读的方式显示文件大小(会将纯数字转换为kb,mb) -a:all 显示所有的…...

含铜废水循环利用体系
在工业绿色转型浪潮中,含铜废水回收技术正以"资源再生智能管控"的双核驱动模式,重构传统水处理产业的价值链。该体系通过构建"精准分离-梯级利用-智慧运维"的闭环系统,不仅突破了重金属废水处理的技术桎梏,更…...
移动端返回指定页面
onLoad(() > { // #ifdef APP-PLUS || MP-ALIPAY || H5 onBackPress(() > { uni.switchTab({ url: ‘/pages/my/my’, }) return true }) // #endif }) onUnload(() > { // #ifdef MP-WEIXIN uni.switchTab({ url: ‘/pages/my/my’, }) // #endif })...

MySQL 安装配置(完整教程)
文章目录 一、MySQL 简介二、下载 MySQL三、安装 MySQL四、配置环境变量五、配置 MySQL5.1 初始化 MySQL5.2 搭建 MySQL 环境 六、修改 MySQL 密码七、卸载 MySQL八、结语 一、MySQL 简介 MySQL 是一款广泛使用的开源关系型数据库管理系统(RDBMS)&#…...

【JavaScript】二十九、垃圾回收 + 闭包 + 变量提升
文章目录 1、作用域1.1 局部作用域1.2 全局作用域1.3 作用域链 2、JC垃圾回收机制♻️3、GC算法3.1 引用计数法3.2 标记清除法 4、闭包4.1 定义4.2 闭包的应用:实现数据的私有 5、变量提升 1、作用域 即一个范围,离开了这个范围,这个变量就不…...

【从零开始学习RabbitMQ | 第一篇】从异步通信到交换机
目录 前言 1.什么是RabbitMQ? 2.同步调用的优缺点 3.异步调用的优缺点 3.1优点: 3.2异步调用的问题是什么? 4技术选型 4.1AMQP协议就是: 4.2kafka和RabbitMQ的使用场景 5.安装RabitMq 6.rabitmq的整体架构 7.RabibtM…...
100个常用的DeepSeek指令
日常生活类(20个) 1. 新闻解读:请为我解读今天的热点新闻。 2. 天气查询:请查询……的天气并推荐着装。 3. 旅行攻略:请制定前往……的旅行攻略。 4. 菜谱生成:请生成……菜的具体做法。 5. 解决方案&…...

AI(学习笔记第二课) 使用langchain进行AI开发
文章目录 AI(学习笔记第二课) 使用langchain进行AI开发学习内容:1. 使用背景2.创建python(pycharm community版)开发环境并连接deepseek2.1 创建python(pycharm community版)开发环境2.2 创建python工程2.3 写入初始py…...

基于Jenkins的DevOps工程实践之Jenkins共享库
文章目录 前言Jenkins共享库结构1、共享库演示2、知识点补充3、实践使用共享库格式化输出日志4、groovy基础语法4.1、 什么是 Groovy?4.2、groovy特点4.3、运行方法4.4、标识符4.5、基本数据类型4.5.1、string类型4.5.2、list类型 4.6、函数使用4.7、正则表达式 5、…...

使用Qt自带的Qt assistant时如何添加需要查看的文档
当我们双击打开Qt Assistant时 左边目录栏只有自带的帮助文档,所以需要添加要查看的文档 点击左上角Edit中的Preferences,点击add 找到qdoc文件夹 全选里面的内容 点击Apply 点击ok 左边的目录栏就出现所有这个版本的Qt有关的文档啦...

基于网络爬虫+Spark+Hadoop等大数据和SpringBoot技术实现的的汽车行业大数据分析与可视化平台系统(源码+论文+PPT+部署文档教程等)
博主介绍:CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围…...

日本IT|AI应用工程师主要工作内容以及职业前景解析
1. 主要工作内容 AI应用工程师是: 类别具体工作内容常见工具需求分析和业务部门沟通,明确「用AI解决什么问题」PowerPoint, Excel, Miro模型选型与微调用现成AI(如BERT、YOLOv8、Stable Diffusion等)做Fine-TuningPython (PyTor…...

Soft Mask(软遮罩)技术
一、概述 Soft Mask是一种技术或工具,主要用于实现平滑的边缘遮罩效果。它在不同的应用领域有不同的实现和定义 1.在Unity UI设计中 SoftMask是一款专为Unity设计的高级遮罩工具,它突破了传统Mask的限制,提供了更为灵活和细腻的UI遮罩解决方案…...

ESP32开发之freeRTOS的互斥量
什么是互斥量互斥量的应用场合互斥量的API函数基本代码结构互斥量使用举例递归锁递归锁举例总结什么是互斥量 在freeRTOS中,多个任务访问一块共享资源,会产生竞争现象。 比如马路上只有一个很早以前的电话亭,A、B都想要打电话,然后他们就开始打架了。但是如果A先进去了然…...

K8s 资源分类
K8s 资源分类图谱 内置资源的分类 1、工作负载相关: Pod:最小的部署单元,包含一个或多个容器。 Deployment:管理无状态应用的副本和滚动更新。 StatefulSet:适用于有状态应用(如数据库)&#…...
Python连接云端服务器:基于Paramiko库的实践与问题剖析
引言 在软件开发与运维场景中,借助Python连接云端服务器进行操作极为常见。Paramiko库作为实现SSHv2协议的有力工具,为Python与云端服务器的交互搭建了桥梁。本文将深入介绍使用Paramiko连接云端Linux服务器的方法,并剖析过程中可能遭遇的问…...

基于 Flask的深度学习模型部署服务端详解
基于 Flask 的深度学习模型部署服务端详解 在深度学习领域,训练出一个高精度的模型只是第一步,将其部署到生产环境中,为实际业务提供服务才是最终目标。本文将详细解析一个基于 Flask 和 PyTorch 的深度学习模型部署服务端代码,帮…...
洛谷 P1850 [NOIP 2016 提高组] 换教室
题目传送门 前言 终于自己想出概率期望 d p dp dp 的状态了,但是依旧没能相对转移方程。(招笑) 暴力 这题部分分和特殊情况分给的挺多的,所以先拿部分分。 一、思路 先跑一边 F l o y d Floyd Floyd 最短路求出两点间最短距…...
C#生成二维码和条形码
C# 实现二维码和条形码生成:从入门到实战 文章目录 C# 实现二维码和条形码生成:从入门到实战一、引言二、准备工作2.1 开发环境搭建2.2 引入相关库 三、生成条形码3.1 条形码基本概念3.2 使用[ZXing.Net](https://ZXing.Net)生成条形码3.2.1 核心代码实现…...

【金仓数据库征文】金仓数据库 KES:MySQL 迁移实用指南
我们都知道,现在企业数字化转型那可是势在必行,数据库迁移这事儿就变得特别关键。金仓数据库的 KingbaseES(简称 KES),就给咱从 MySQL 往 KES 迁移数据库提供了一套超好用的方案。下面咱就讲下 咋用金仓数据库来完成这…...

多态(c++详细版)
一.多态 1.1 多态的概念 多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为编译时多态(静态多态)和运⾏时多态(动态多态),这⾥我们重点讲运⾏时多态,编译时多态(静态多态)和运⾏时多态(动态多态)。编译时多态(静态多态)主…...
内存泄漏系列专题分析之八:高通相机CamX内存泄漏内存占用分析--通用ION(dmabuf)内存拆解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之七:高通相机CamX--Android通用ION(dmabuf)内存分配和释放原理 这一篇我们开始讲: 内存泄漏系列专题分析之八:高通相机CamX内存泄漏&内存占用分析--通用ION(dmabuf)内…...