[数据库实验七]事务设计

news2024/11/20 0:37:44

目录

一、实验目的与要求

二、实验内容

三、实验小结


实验中涉及的数据参考:[数据库实验一]数据库和表-CSDN博客

一、实验目的与要求

1.熟悉提交事务

2.回滚事务

3.检查点技术

注:可以用可视化软件来实现

二、实验内容

基于现有数据库设计事务提交、事务回滚、及检查点实验,观察比较提交前后执行结果并分析。

源码:

(1)将autocommit设置为0

mysql> set autocommit=0;

(2)设计事务提交

mysql> start TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(1,'a');

Query OK, 1 row affected (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.00 sec)

(3)设计事务回滚

mysql> start TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(2,'b');

Query OK, 1 row affected (0.00 sec)

mysql> rollback;

Query OK, 0 rows affected (0.00 sec)

(4)设计检查点实验

mysql> start TRANSACTION;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(2,'b');

Query OK, 1 row affected (0.00 sec)

mysql> savepoint L1;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(3,'c');

Query OK, 1 row affected (0.00 sec)

mysql> savepoint L2;

Query OK, 0 rows affected (0.00 sec)

mysql> insert into test values(4,'d');

Query OK, 1 row affected (0.00 sec)

mysql> rollback to L2;

Query OK, 0 rows affected (0.00 sec)

mysql> commit;

Query OK, 0 rows affected (0.01 sec)

运行测试结果截图:

(1)事务commit之前 缓冲区中的test表格和内存中的test表格

事务commit后内存中的test表格

(2)事务rollback之前 缓冲区中的test表格

事务rollback之后 缓冲区的test表格和内存中的test表格

(3)事务rollback to L2之前,缓冲区中的test表格

事务rollback之后 缓冲区中的test表格和内存中的test表格

事务commit之后 内存中的test表格

解释原因:

事务分为隐式事务和显式事务两种。DML语句(insert、update、delete)就是隐式事务。本次实验使用显式事务,在使用显式事务之前,需要关闭自动提交功能,即设置autocommit变量值为0。开启事务:START TRANSACTION;提交/撤销事务:COMMIT;/ROLLBACK;回滚事务:1设置保存点:除了撤销整个事务,用户还可以使用ROLLBACK TO语句使事务回滚到某个点,在这之前需要使用SAVEPOINT语句来设置一个保存点。SAVEPOINT identifier;其中,identifier为保存点的名称。2回滚至保存点:ROLLBACK TO SAVEPOINT语句会向已命名的保存点回滚一个事务。如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚中被撤销。ROLLBACK TO SAVEPOINT identifier;当事务回滚到某个保存点后,在该保存点之后设置的保存点将被自动删除。

结论:

进行事务设计时的步骤为

#步骤一:开启事务start transaction;

#步骤二:编写事务中的sql语句(insert、update、delete)

#步骤三:结束事务

1commit; #提交事务

2rollback; #回滚事务:就是事务不执行,回滚到事务执行前的状态

如果事务中的所有操作都成功完成,并且希望将更改永久保存到数据库中,可以使用 `COMMIT` 命令来提交事务。否则,只对缓冲区进行更改,无法永久保存到数据库中。

三、实验小

1.实验中遇到的问题及解决过程

问题:没有将autocommit设置为0

解决过程:因为autocommit是自动提交模式,如果autocommit=1,则每一条SQL语句都会自动提交commit。因此如果想要控制自动提交,可以通过更改autocommit变量来实现,将其设置为0表示关闭自动提交。

2.实验中产生的错误及原因分析

错误: 打开mysql登录A001账号密码时无法set role Admin

ERROR 2013 (HY000): Lost connection to MySQL server during query No connection. Trying to reconnect... Connection id:    58 Current database: *** NONE ***

原因分析:读取初始通信包时MySQL服务器连接丢失,系统错误0
win+r 输入services.msc 找到MySQL服务重新启动

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

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

相关文章

Axure-本地发布,局域网内用户访问

目录 前言内容一. 选择Axure发布路径,进行相应配置二.添加IIS服务配置(不在这里赘述!)三:添加IIS配置,创建网站四.添加安全策略:实践: 前言 最近加入了公司的积分系统,由…

时尚与科技的融合,戴上更轻更悦耳的QCY C30耳夹耳机,随时享受好音乐

不知不觉,蓝牙耳机已经成了我日常必备的小工具了,尤其是这两年新出现的耳夹式耳机,轻松解决了入耳式耳机的舒适性难题,戴上一整天也不会觉得累,而且一款好看的耳机不仅能够提供澎湃的音质,还能成为时尚出街…

理解信息安全中的SOAR

在信息安全领域,SOAR(Security Orchestration, Automation, and Response,安全编排、自动化与响应)是一个现代化的解决方案,旨在通过集成和自动化的方式优化安全操作流程,提升威胁检测、事件响应的速度与效…

雷达原理-绪论-西电魏青

Radar 雷达:radio detection and ranging 无线电探测和测距 无线电:电磁波信号 探测:通过电磁波信号的一个回波特性实现物体探测 测距:利用回波信号(现在技术发展,不单单是测距,还能是物体的各种…

stm32 flash无法擦除

通过bushound调试代码发现,当上位机发送命令到模组后flash将不能擦除,通过 HAL_FLASH_GetError()函数查找原因是FLASH Programming Sequence error(编程顺序错误),解决办法是在解锁后清零标志位…

构建高效房屋租赁系统:Spring Boot应用

1 绪论 1.1 研究背景 中国的科技的不断进步,计算机发展也慢慢的越来越成熟,人们对计算机也是越来越更加的依赖,科研、教育慢慢用于计算机进行管理。从第一台计算机的产生,到现在计算机已经发展到我们无法想象。给我们的生活改变很…

MySQL purge逻辑分析与调测

目录 purge逻辑分析与调测 一、purge线程 1、什么是purge线程? 2、为什么需要purge? 3、purge哪些内容? 4、什么时候purge? 5、purge内存结构 二、purge主要步骤 1、确认可见性 2、获取需要purge的undo记录 …

开源鸿蒙OpenHarmony系统修改屏幕旋转方法 深圳触觉智能RK3566开发板

本文提供OpenHarmony4.0系统竖屏修改为旋转时的操作方法,在此为大家介绍了两种方法!第一种方式是将修改过的文件重新编译后烧录至开发板中实现屏幕旋转,第二种方式则是通过覆盖原文件的方式实现屏幕旋转。 1、源码下载 首先进入触觉智能官网…

【C语言从不挂科到高绩点】22-指针04-结构体指针【重点知识】

Hello!彦祖们,俺又回来了!!!,继续给大家分享 《C语言从不挂科到高绩点》课程!! 本节将为大家讲解C语言中非常重要的知识点-指针: 本套课程将会从0基础讲解C语言核心技术,适合人群: 大学中开设了C语言课程的同学想要专升本或者考研的同学想要考计算机等级证书的同学想…

UART开发基础

目录 前言 同步传输与异步传输 1.概念与示例 2.差别 UART协议与操作方法 1.UART协议 2.STM32H5 UART硬件结构 3.RS485协议 UART编程 1.三种编程方式 2.查询方式 3.中断方式 4.DMA 方式 效率最高的UART编程方法 1.IDLE中断 2.DMA 发送/DMAIDLE 接收 在RTOS里使…

L2 Loss介绍及梯度计算说明

L1 Loss介绍及梯度计算说明-CSDN博客 L2 Loss(MS,也称为均方误差损失或平方误差损失)是一种常用的损失函数,广泛应用于回归任务中。它通过计算预测值与真实值之间的平方差来评估模型的性能。 1. L2 Loss 的定义 L2 Loss 的数…

Python | Leetcode Python题解之第437题路径总和III

题目: 题解: class Solution:def pathSum(self, root: TreeNode, targetSum: int) -> int:prefix collections.defaultdict(int)prefix[0] 1def dfs(root, curr):if not root:return 0ret 0curr root.valret prefix[curr - targetSum]prefix[cu…

Golang | Leetcode Golang题解之第436题寻找右区间

题目: 题解: func findRightInterval(intervals [][]int) []int {n : len(intervals)type pair struct{ x, i int }starts : make([]pair, n)ends : make([]pair, n)for i, p : range intervals {starts[i] pair{p[0], i}ends[i] pair{p[1], i}}sort.…

第四届工业母机高质量发展论坛在浙江温岭召开

9月24日,由工业和信息化部产业发展促进中心(以下简称产促中心)主办的“第四届工业母机高质量发展论坛”在浙江温岭成功召开。 中国工程院院士周济、郭东明、王国庆,工业和信息化部装备工业一司一级巡视员苗长兴,中国企…

C语言 | Leetcode C语言题解之第437题路径总和III

题目: 题解: /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/ //递归遍历树节点,判断是否为有效路径 int dfs(struct TreeNode * root, int ta…

C++ -函数重载-详解

博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ C -函数重载-详解 1.是什么2.怎么用2.1示例 3.原理3.1C/C编译链接过程3.2函数名修饰规则3.3过程1.调用函数的过程2.编译阶段的函数调用 总结 1.是什么 如果在百度中搜索重载这…

Adobe Bridge简体中文版百度云下载与安装(附教程)

如大家所熟悉的,Adobe Bridge常常简称为BR,是一款数字资产管理软件,可以帮助用户浏览、组织、搜索和管理各种类型的媒体文件,如照片、音频、视频等。 Bridge发展至今有许多个版本,目前来说常用的版本有Bridge 2018、2…

2024东湖高新下半年水测公示名单啦

2024东湖高新下半年水测公示名单啦 公示时间9月13日-9月20日,快看看你过了没!! 东湖高新区报名水测共有2600多人,水测公示通过1201人,部分人员免考。 水测通过后就赶紧整理好申报材料,准备申报了&#xff…

2.1 HuggingFists系统架构(一)

系统架构 HuggingFists的前端主体开发语言为HtmlJavascript,后端的主体开发语言为Java。在算子部分有一定份额的Python代码,用于整合Python在数据处理方面强大能力。 功能架构 HuggingFists的功能架构如上,由下向上各层为: 数据存…

【程序大侠传】应用内存缓步攀升,告警如影随形

前序 在武侠编码的江湖中,内存泄漏犹如隐秘杀手,潜伏于应用程序的各个角落,悄无声息地吞噬着系统资源。若不及时发现和解决,必将导致内存枯竭,应用崩溃。 背景:内存泄漏的由来 内存泄漏,乃程序…