Java学习-MySQL-事务

news2024/12/23 23:54:58

Java学习-MySQL-事务

ACID原则:原子性、一致性、隔离性、持久性

原子性(Atomicity)

两个步骤要么一起成功,要么一起失败,不可能只成功一个。
举例: A账户400元,B账户600元,A向B转账200元,要么转账成功,A账户剩余200元,B账户800元,要么转账失败,A账户还是400元,B账户600元,不可能存在A账户转账成功剩余200元,B账户没有收到转账还是600元,或者A账户没有扣费还是400元,B账户已经到账变成800元。

一致性(Consistency)

操作前与操作后的状态一致。
举例: 转账前A账户400元,B账户600元,总和1000元,转账后A账户剩余200元,B账户800元,总和还是1000元.

隔离性(Isolation)

多个拥护同时操作,排除其他事务对本次事务的影响。

持久性(Durability)

事务结束后的数据不会随着外界原因导致数据丢失。事务一旦提交则不可逆,被持久化到数据库中。

脏读

一个事务读取了另一个事务未提交的数据
举例: A账户400元,B账户600元,C账户200元,A账户读取到B账户的余额,在向B账户转账200元的时候,C账户读取到B账户的余额还有600元,向B账户转账100元。A账户转账成功,显示B账户的余额为800元,C账户转账成功,显示B账户的余额为700元。

幻读

在一个事务内读取到了其他事务插入的数据,导致前后读取不一致

流程

-- 关闭事务自动提交
SET autocommit=0

-- 事务开启
START TRANSACTION

INSERT xx
INSERT xx

-- 提交:持久化(成功)
COMMIT

-- 回滚:恢复原状(失败)
ROLLBACK

-- 事务结束,开启自动提交
SET autocommit=1

SAVEPOINT -- 设置保存点
ROLLBACK TO SAVEPOINT -- 回滚到保存点
RELEASE SAVEPOINT -- 删除保存点

在这里插入图片描述

模拟场景

CREATE DATABASE shop CHARACTER SET utf8 COLLATE utf8_general_ci
USE shop

CREATE TABLE `account`(
`id` INT(3)NOT NULL AUTO_INCREMENT,
`name` VARCHAR(20) NOT NULL,
`money` DECIMAL(9,2) NOT NULL,
PRIMARY KEY(`id`)
)ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `account`(`name`,`money`)VALUES
('A',8000),('B',10000)

在这里插入图片描述

转账

SET autocommit=0
START TRANSACTION

UPDATE `account` SET `money`=`money`-5000 WHERE `name`='A'
UPDATE `account` SET `money`=`money`+5000 WHERE `name`='B'

在这里插入图片描述
未提交,回滚,回到初始状态

ROLLBACK;

在这里插入图片描述
提交,数据持久化

UPDATE `account` SET `money`=`money`-5000 WHERE `name`='A'
UPDATE `account` SET `money`=`money`+5000 WHERE `name`='B'
COMMIT;

在这里插入图片描述
再次回滚只能维持新的状态,无法回到提交前的状态

ROLLBACK;
SET autocommit=1

在这里插入图片描述

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

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

相关文章

Cloudera的新变化:混合数据平台、端到端AI、实时数据处理

作者 | 宋慧 出品 | CSDN云计算 数据的价值和技术应用,获得了全行业的关注、认可和重视。 不过,数据赛道百家争鸣,数据系统的技术与行业方案众多,对于开发团队和用户来说,其实仍然需要耗费大量调研和分析的时间。 近日…

notepad++自动缩进功能

支持java等格式化 代码编辑器Notepad是程序员必备的文本编辑器,该软件软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。Notepad官方下载支持27种编程语言,通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等。NotePad是一个…

虹科分享 | NetFlow数据能够为网络故障排除提供什么? | 网络流量监控

NetFlow是网络设备中标准化的功能,用于收集流量测量值并将其导出到另一个系统进行分析。对该流数据的分析通知网络管理器网络是如何执行的以及其他使用细节。例如,流量分析可以通过跟踪IP和突出显示异常(如过度使用流量)来帮助解决…

python django4.2版本

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 提示:这里可以添加本文要记录的大概内容: 例如:django4.2版本 提示:以下是本篇文章正文内容,下面案例可供参…

《中学科技》期刊简介及投稿邮箱

《中学科技》期刊简介及投稿邮箱 《中学科技》以传播科技知识、启迪智慧、培养才能为宗旨,提供电子技术、计算机、陆海空模型、数学、物理、化学、生物、天文等方面的科技活动资料,特别注意通过科学观察,实验和制作实践的途径,培…

【中标通知】塔望咨询中标新疆农发集团 品牌规划建设项目

【新疆农发集团供应链有限公司-品牌建设项目】于2022年5月正式启动。 本次项目2022年4月6日招标结果正式公示。【塔望咨询】凭借3W消费战略方法体系和专注食品行业丰富的品牌项目经验,中标新疆农发集团供应链有限公司兵团红品牌规划建设项目。 中标结果公告 新疆农…

[算法前沿]--014- AIGC和LLM下的Prompt Tuning微调范式

文章目录 1. Prompt Tuning含义1.1 解决问题1.2 语言模型分类1.3 Prompt-Tuning的研究进展1.4 如何挑选合适的Pattern?1.5 Prompt-Tuning的本质1.5.1 Prompt的本质是一种对任务的指令1.5.2 Prompt的本质是一种对预训练任务的复用;1.5.3 Prompt的本质是一种参数有效…

Python科研数据可视化

在过去的20 年中,随着社会产生数据的大量增加,对数据的理解、解释与决策的需求也随之增加。而固定不变是人类本身,所以我们的大脑必须学会理解这些日益增加的数据信息。所谓“一图胜千言”,对于数量、规模与复杂性不断增加的数据&…

如何获取苹果设备的UDID(iPhone/iPad UDID查询方法)

方法一、通过电脑连接苹果手机后查询 1、在电脑上下载并安装爱思助手,安装完成后将电脑和苹果手机使用苹果数据线连接起来; ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) 然后启动爱思助手这个软件&#xf…

重置电脑时提示“缺少所需的驱动器分区”怎么办?

当您启动Windows 10电脑并收到“您的电脑/设备需修复”这个消息提示时,您会马上尝试修复电脑,如果您这样做了,您可能会收到一个“安装Windows的驱动器已被锁定”的信息。如果您尝试重置您的电脑,您可能会收到一条提示,…

【测试面试】offer收割机再现,软件测试实战场景面试题(附答案)...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 软件测试面试题&am…

No.045<软考>《(高项)备考大全》【专项1】《案例分析 - 简介、方法、技巧、理论》

《案例分析》 1 专项介绍1.1 考试分析1.2 试卷参考1.3 题型分析 2 案例分析答题技巧2.1 考试6要2.2 三不要—可以2.3 其他技巧 3 案例中的万金油4 各领域中的重要工具与输出5 案例分析答题技巧6 案例分析理论题历年考点分析6.1 一般知识和科研立项6.2 整体、范围、需求6.3 进度…

数据库之约束、索引和事务

一、约束 约束,顾名思义就是数据库对数据库中的数据所给出的一组检验规则.负责判断元素是否符合数据库要求.其目的就是为了提高效率以及准确性. 1.not null - > 数据元素非空 表示如果插入数据,则当前数据不能为空. //创建一张学生表,其班级id和年级id不为空 create …

深度学习 - 42.特征交叉与 SENET、Bilinear Interaction 与 FiBiNet

目录 一.引言 二.摘要 - ABSTRACT 三.介绍 - INTRODUCTION 四.相关工作 - RELATED WORK 1.因式分解机及其变体 - Factorization Machine and Its relevant variants 2. 基于深度学习的点击率模型 - Deep Learning based CTR Models 3.SENET Module 五.FiBiNet Model 1…

4核8G云服务器腾讯云CVM S5和轻量应用服务器性能差异?

腾讯云4核8G云服务器可以选择轻量应用服务器或CVM云服务器标准型S5实例,轻量4核8G12M服务器446元一年,CVM S5云服务器935元一年,相对于云服务器CVM,轻量应用服务器性价比更高,轻量服务器CPU和CVM有区别吗?性…

PXE 网络安装Linux ——Kickstart无人值守安装Linux

PXE(预启动执行环境) PXE(预启动执行环境) 由Intel公司开发的网络引导技术,工作在Client/Server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。 PXE具备以…

【Leetcode -234.回文链表 -160.相交链表】

Leetcode Leetcode -234.回文链表Leetcode -160.相交链表 Leetcode -234.回文链表 题目:给你一个单链表的头节点 head ,请你判断该链表是否为回文链表。如果是,返回 true ;否则,返回 false 。 示例 1: 输…

上新了丨高性价比5G智能模组,美格智能SRM700正式发布

伴随着5G、AI、云计算等技术与物联网技术的融合发展,一个万物智联的智能世界正在到来。5G已经成为数字经济重要的基础设施,千行百业的用户都需要依靠高速率、大带宽、低延时的5G技术来构建数字化转型能力。 作为全球领先的无线通信模组及解决方案提供商…

跳槽必备,全面总结Android面试知识点

在最近的 Android 开发(社招)面试中总结的 Android 基础知识点,已经拿到心仪的offer,回馈同学们,感谢其他大佬的分享。 Android中大厂面试都很重视基础知识的考察,面试前不仅要熟悉这些知识点,…

射频封装技术:层压基板和无源器件集成

射频和无线产品领域可以使用非常广泛的封装载体技术,它们包括引线框架、层压基板、低温共烧陶瓷(LTCC)和硅底板载体(Si Backplane)。由于不断增加的功能对集成度有了更高要求,市场对系统级封装方法&#xf…