MySQL基础篇(四)事务

一、事务简介

事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一期向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。

注意: 默认 MySQL 的事务是 自动提交 的,也就是说,当执行完一条 DML 语句时,MySQL 会立即隐式的提交事务。

二、事务操作

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 ('张三', 2000),
       ('李四', 2000);

2. 控制事务一

(1)查看/设置事务提交方式

SELECT @@autocommit ; 
SET @@autocommit = 0 ;

(2)提交事务

COMMIT ;

(3) 回滚事务

ROLLBACK ;

注意:上述的这种方式,我们是修改了事务的自动提交行为, 把默认的自动提交修改为了手动提交, 此时我们执行的 DML 语句都不会提交, 需要手动的执行 commit 进行提交。

3. 控制事务二

(1)开启事务

START TRANSACTIONBEGIN ;

(2)提交事务

COMMIT ;

(3) 回滚事务

ROLLBACK ;

4. 转账案例

-- 开启事务
start transaction

-- 1. 查询张三余额
select * from account where name = '张三';

-- 2. 张三的余额减少1000
update account set money = money - 1000 where name = '张三';

-- 3. 李四的余额增加1000
update account set money = money + 1000 where name = '李四';

-- 如果正常执行完毕, 则提交事务
commit;

-- 如果执行过程中报错, 则回滚事务
-- rollback;

三、事务四大特性

(1)原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败。
(2)一致性(Consistency):事务完成时,必须使所有的数据都保持一致状态。
(3)隔离性(Isolation):数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行。
(4)持久性(Durability):事务一旦提交或回滚,它对数据库中的数据的改变就是永久的。
上述就是事务的四大特性,简称 ACID

四、并发事务问题

(1)赃读:一个事务读到另外一个事务还没有提交的数据。
在这里插入图片描述

(2)不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读。在这里插入图片描述

(3) 幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了 “幻影”。
在这里插入图片描述

五、事务隔离级别

在这里插入图片描述

(1)查看事务隔离级别

SELECT @@TRANSACTION_ISOLATION;

(2)设置事务隔离级别

SET [ SESSION | GLOBAL ] TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

注意:事务隔离级别越高,数据越安全,但是性能越低。

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

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

相关文章

使用Docker方式安装Artifactory

1、安装前环境准备 首先要关闭防火墙,关闭Selinux,准备好安装好的docker。以下安装版本:7.19.10 ##关闭防火墙,并设置开机自关闭 systemctl stop firewalld.service systemctl disable firewalld.service ##查看防火墙状态 sy…

Spark集群搭建

Spark集群结构 图 名词解释 Driver 该进程调用 Spark 程序的 main 方法,并且启动 SparkContextCluster Manager 该进程负责和外部集群工具打交道,申请或释放集群资源Worker 该进程是一个守护进程,负责启动和管理 ExecutorExecutor 该进程是一…

Linux-故障排查

实验要求 samba仅允许192.168.1.0/24、192.168.10/24进行访问 开一台虚拟机 快照恢复到未联网安装 关闭防火墙 安全linux 编辑ens33网卡 vim /etc/sysconfig/network-scripts/ifcfg-ens33 将ens33网卡复制一份命名为ens37 cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc…

深度学习课程实验三训练和测试卷积神经网络

一、 实验目的 1、学会搭建、训练和测试卷积神经网络,并掌握其应用。 2、掌握使用numpy实现卷积(CONV)和池化(POOL)层,包括正向春传播和反向传播。 二、 实验步骤 Convolutional Neural Networks: Step by Step 1、导入所需要的安装包 2、构建卷积神经…

Docker安装与仓库使用

日升时奋斗,日落时自省 目录 1、Docker引擎 2、Docker和虚拟机的区别 3、Docker架构 4、Docker安装 4.1、Ubuntu安装 4.1.1、查看版本需求 4.1.2、卸载历史版本 4.1.3、配置docker下载源 4.1.4、自动启动配置 4.1.5、查看docker版本 4.2、CentOS安装 4…

flutter 五:MaterialApp

MaterialApp const MaterialApp({super.key,this.navigatorKey, //导航键this.scaffoldMessengerKey, //scaffold管理this.home, //首页Map<String, WidgetBuilder> this.routes const <String, WidgetBuilder>{}, //路由this.initialRoute, //初始路由th…

WORD交叉引用参考文献批量转上标

试了好几种方法&#xff0c;只有这个对我奏效

卷积神经网络|导入图片

在学习卷积神经网络时&#xff0c;我们通常使用的就是公开的数据集&#xff0c;这里&#xff0c;我们不使用公开数据集&#xff0c;直接导入自己的图片数据&#xff0c;下面&#xff0c;就简单写个程序实现批量图片的导入。 import osfrom PIL import Imageimport numpy as np…

nginx配置图片服务器

目录 一&#xff1a;访问流程 二&#xff1a;缓存服务器配置 三&#xff1a;上传图片直接上传到图片服务器 四&#xff1a;加快图片访问 一&#xff1a;访问流程 访问缓存服务器(上面安装nginx反向代理到图片服务器&#xff0c;对外提供服务)->图片服务器 二&#xff1…

Windows【工具 05】使用freeSSHd搭建sftp环境(安装+配置+避坑)freeSSHd version 1.3.1安装包网盘分享

使用freeSSHd搭建sftp环境 1.安装2. 使用2.1 开启2.2 配置 3.避坑3.1 端口占用3.2 配置数据无法保存或报没有权限 官方网址已经停止维护&#xff0c;网盘文件 freeSSHd.exe版本为 1.3.1: 链接&#xff1a;https://pan.baidu.com/s/1X-4i9pWGKOsCFEByfPXhig?pwdxp6f 提取码&a…

C# xml序列化和反序列化

问题 有的项目使用webservice返回结果是xml&#xff0c;需要进行xml序列化和反序列化 xml序列化相关特性 C#中&#xff0c;XML序列化相关的特性主要包括&#xff1a; XmlIgnore&#xff1a;这个特性可以用来指示序列化过程忽略一个属性或一个字段。当使用XmlIgnore特性时&a…

Windows PowerShell的安全目标——安全警报

Windows PowerShell的安全目标——安全警报 1. 保证Shell安全 ​ 自从2006年年底PowerShell发布以来&#xff0c;微软在安全和脚本方面并没有取得很好的名声。毕竟那个时候&#xff0c;**VBScript和Windows Script Host(WSH)**是两个最流行的病毒和恶意软件的载体&#xff0c…

3D Gaussian Splatting复现

最近3D Gaussian Splatting很火&#xff0c;网上有很多复现过程&#xff0c;大部分都是在Windows上的。Linux上配置环境会方便简单一点&#xff0c;这里记录一下我在Linux上复现的过程。 Windows下的环境配置和编译&#xff0c;建议看这个up主的视频配置&#xff0c;讲解的很细…

SemCms外贸网站商城系统 SQL注入漏洞复现(CVE-2023-50563)

0x01 产品简介 SemCms是国内团队打造的专门针对外贸网站的开源CMS,主要用于外贸企业,兼容IE,Firefox等主流浏览器。建设商城性质的外贸网站,多语言(小语种)网站。 0x02 漏洞概述 SemCms外贸网站商城系统SEMCMS_Function.php 中的 AID 参数存在SQL注入漏洞,未经身份认…

el-autocomplete远程搜索使用及el-upload上传多个文件流给后端,详情接口返回的是文件地址,前端将文件地址转成文件流,回传文件流给后端

最近遇到一个项目,里面有2个需求我觉得挺常见的,第一个需求是一个表单里,当用户在输入名称后,前端调接口发请求获取到关联名称的企业名称,并展示,然后当用户选中企业后,前端调接口获取选中企业的具体信息,并填充到表单里;第二个需求是,表单里有个上传图片的功能,前端…

异常、反射、注解知识点

1. Java 中的异常 是 Java 提供的一种处理程序中错误的机制。 当发生异常时&#xff0c;JVM 会将异常封装成一个异常对象抛出。此对象用来描述异常信息。 当 JVM 遇到程序异常就会自动停止。 2. 异常分类 Throwable&#xff1a;是 Java 异常的根类&#xff0c;Error 和 Exc…

macOS跨进程通信: XPC 创建实例

一&#xff1a;简介 XPC 是 macOS 里苹果官方比较推荐和安全的的进程间通信机制。 集成流程简单&#xff0c;但是比较绕。 主要需要集成 XPC Server 这个模块&#xff0c;这个模块最终会被 apple 的根进程 launchd 管理和以独立进程的方法唤起和关闭&#xff0c; 我们主app 进…

JAVA版鸿鹄云商B2B2C:解析多商家入驻直播带货商城系统的实现与应用

一、技术选型 java开发语言&#xff1a;java是一种跨平台的编程语言&#xff0c;适用于大型企业级应用开发。使用java开发直播商城可以保证系统的稳定性和可扩展性。 spring boot框架&#xff1a;spring boot是一个快速构建spring应用的框架&#xff0c;简化了开发过程&#xf…

Java大数据hadoop2.9.2搭建伪分布式yarn资源管理器

1、修改配置文件 cd /usr/local/hadoop/etc/hadoop cp ./mapred-site.xml.template ./mapred-site.xml vi mapred-site.xml <configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property> &l…