MySQL的事务-原子性

MySQL的事务处理具有ACID的特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。

1. 原子性指的是事务中所有操作都是原子性的,要么全部完成,要么全部不完成。这意味着事务执行过程中的任何错误都会导致事务回滚到开始前的状态,所有操作就像没有发生一样。

原子性体现如下:

假设有一张账号表,现在要进行转账操作(从zhangsan账号转1000元到lisi账号)

没有事务控制的情况下,操作应该如下

update account set money=money-1000 where name='zhangsan';

update account set money=money+1000 where name='lisi';

如果在处理的过程中出错了,那么可能就会导致数据只更新了一般,比如

update account set money=money-1000 where name='zhangsan';
出错了...

update account set money=money+1000 where name='lisi';

由于“出错了...”不是sql语句,应该执行到“出错了...”就会抛错,导致

update account set money=money+1000 where name='lisi'; 没有被执行。

因此就会发现钱丢了1000元。最终结果就会变成

造成这个结果的原因如下:

(1)mysql的事务是自动提交的, 可以使用select @@autocommit进行查看

@@autocommit=1表示事务是自动提交的;

(2)这两个sql语句分别是两个单独的事务,应该当执行完第一个语句的时候,中间出错了,那么第一个语句的结果已经被提交了,而第二个语句没有被执行到。

update account set money=money-1000 where name='zhangsan';
出错了...

update account set money=money+1000 where name='lisi';

解决上面问题的方式有两种,一是将事务改为手动提交,二是开启事务,具体的解决方式如下

(1)事务改为手动提交

set @@autocommit=0;


update account set money=money-1000 where name='zhangsan';
出错了...

update account set money=money+1000 where name='lisi';

当sql出错时,进行rollback回滚,就不会提交事务了。

(2)开启事务

start transaction;


update account set money=money-1000 where name='zhangsan';
出错了...

update account set money=money+1000 where name='lisi';

当sql出错时,不提交事务,进行rollback回滚,同样可以保证事务的原子性。

以上就是事务的原子性,后续文章将进行一致性、隔离性、持久性的学习。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从0开始python学习-35.allure报告企业定制

目录 1. 搭建allure环境 2. 生成报告 3. logo定制 4. 企业级报告内容或层级定制 5. allure局域网查看 1. 搭建allure环境 1.1 JDK,使用PyCharm 找到pycharm安装目录找到java.exe记下jbr目录的完整路径,eg: C:\Program Files\JetBrains\PyCharm Com…

有关List的线程安全、高效读取:不变模式下的CopyOnWriteArrayList类、数据共享通道:BlockingQueue

有关List的线程安全 队列、链表之类的数据结构也是极常用的,几乎所有的应用程序都会与之相关。在java中, ArrayList和Vector都使用数组作为其内部实现。两者最大的不同在与Vector是线程安全的。 而ArrayList不是。此外LinkedList使用链表的数据结构实现…

C/C++图形化编程(2)

归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言​📝 站在巨人的肩上是为了超过巨人&#x…

040、全卷积

之——FCN 目录 之——FCN 杂谈 正文 1.FCN 2.实现 杂谈 FCN(Fully Convolutional Network)是一种深度学习网络架构,专门设计用于语义分割任务。传统的深度学习网络如卷积神经网络(CNN)在处理图像时通常用于分类…

Spring Boot学习随笔- 第一个Thymeleaf应用(基础语法th:,request、session作用域取值)

学习视频:【编程不良人】2021年SpringBoot最新最全教程 第十五章、Thymeleaf Thymeleaf是一种现代化的服务器端Java模板引擎,专门用于Web和独立环境。Thymeleaf在有网络和无网络的环境下皆可运行,即可以让美工在浏览器查看页面的静态效果&am…

2023年12月16日~12月22日(自适应反馈机制下基于卷积神经网络的高清晰反射波反演算法:CNN-RWI)

标题:Adaptive Feedback Convolutional-Neural-Network-Based High-Resolution Reflection-Waveform Inversion 全波形反演(FWI)是一种非线性拟合观测地震记录从而获得高清晰速度模型的最优化算法。FWI能够通过拟合浅层初至波和反射波获得较准…

1.数字反转

题目 AC import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();if(n>0) {StringBuilder str new StringBuilder();str.append(n);StringBuilder str1 str.reverse();String st…

视频号小店无货源怎么做?难不难?一篇文章告诉你答案!

大家好,我是电商糖果 视频号从去年开始做电商,就有朋友问过糖果可以做无货源模式吗? 糖果做无货源电商已经七年了,做过天猫,京东,闲鱼,抖音小店。 根据糖果这些年做电商总结出来的经验&#…

机密计算容器前沿探索与 AI 场景应用

作者:壮怀、朱江云 企业与个人对数据隐私保护日益关切,从数据,网络的可信基础设施扩展到闭环可信的计算基础设施,可信的计算,存储, 网络基础设施必定成为云计算的标配。 机密计算技术应运而生,…

EFCore8分析类图映射到代码和数据库的示例

借用微软EFCore8官方的示例,我画了张类图: blog(博客)与Post(文章)是1对多的关系,显式表达出两者间是双向导航:双方都可见。 Post(文章)与Tag(标…

python(上半部分)

第一部分 1、input()语句默认结果是字符串 2、type()可以判断变量的类型 3、input()输出语句 (默认为字符串类型) 4、命名规则:中文、英文、数字、_,数字不可开头,大小写敏感。 5、 %s:将内容转换成…

Java期末复习题之选择题理论综合

点击返回标题->23年Java期末复习-CSDN博客 选择题考察内容为—— 构造函数的描述,在文件中写入字符而不是字节选用什么类,java源文件import, class定义以及package的顺序,静态成员变量作用域,非抽象子类的接口实现,…

实现打印一个数字金字塔。例如:输入5,图形如下图所示

1*12**123***1234**** 12345*****#include<stdio.h> void main() {int i,j,l,n,k;scanf("%d",&n);/**********Program**********//********** End **********/ } 当我们拿到这个题目的时候可以看见题目给了我们五个变量&#xff0c;其中n是我们输入的数…

Elasticsearch 写入优化探索:是什么影响了refresh 耗时?

1、问题背景&#xff1a; 数据写入后&#xff0c;refresh耗时过长&#xff0c;能达到1s-5s。 想通过测试&#xff0c;探索确认影响refresh的因素&#xff0c;比如&#xff1a;写入操作是新增还是更新&#xff0c;deleted文档占比是否有影响&#xff0c;是否有其他索引配置&…

一、网络ensp安装

一、网络ensp安装https://blog.csdn.net/G_GUi/article/details/135176493 文章目录 一、下载4个软件安装二、工具栏常用图标 一、下载4个软件安装 前面3个软件必须要安装&#xff0c;不然用不了ensp https://pan.baidu.com/s/1kV7cL–BEbgANwSrZJ5t1Q?pwdqqqq 二、工具栏常…

【XML】TinyXML 详解(一):介绍

【C】郭老二博文之&#xff1a;C目录 1、简介 优点&#xff1a; TinyXML 是一个简单、小型的 C XML 解析器&#xff0c;可以轻松集成到项目中。 TinyXML 解析 XML 文档&#xff0c;并根据该文档构建可读取、修改和保存的文档对象模型 (DOM) TinyXML 是在 ZLib 许可下发布的&a…

AI一键注释代码、阅读整个项目、转换编程语言。已开源!

获取github源码地址和国内url、key方式&#xff1a;在文章底部 大家好今天给大家介绍一款开源项目&#xff0c;这个项目是由渡码维护的&#xff0c;这个项目支持自己的大模型和使用openai两种方式&#xff0c;本文章介绍使用openai的方式&#xff01; 使用过程中发现两个问题…

Java 第16章 坦克大战1-2 思路整理

文章目录 1 绘制坦克坦克画板Panel画框Frame 2 让坦克动起来画板Panel 3 本章作业 1 绘制坦克 坦克 不同坦克有共同属性&#xff0c;可以先提取共同特征&#xff08;坐标位置&#xff09;作为父类&#xff0c;然后其他坦克类继承它。 画板Panel 有坦克在画板上显示&#xf…

四. 基于环视Camera的BEV感知算法-PETR

目录 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比5. PETRv2总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第四章——基…

[MySQL binlog实战] 增量同步与数据搜索~从入门到精通

学习基础知识&#xff0c;并落实到实际场景&#xff08;增量同步数据搜索&#xff09; 对基础知识不感兴趣的&#xff0c;可以直接跳到应用场景 文章目录 binlog是什么简介产生方式文件格式statementrowmixed 怎么办开启 binlog查看 binlog其他查看相关命令运维查看 binlog设置…