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 }

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于springboot的java读取文档内容(超简单)

读取一个word文档里面的内容,并取出来。 代码: SneakyThrowsGetMapping(value "/readWordDoc")ApiOperationSupport(order 1)ApiOperation(value "文档读取 ", notes "文档读取 ")public R ReadWordDoc () {System.o…

vue封装组件(一)标签和下拉框组合实现添加数据

背景: 最近接入短剧内容,需要添加短剧合作方。在详情页需要支持添加组件 方案一:标签tag加上输入框实现添加数据。图片见下 这个是刚开始做的,后来产品觉得这样会造成随意修改数据,需要改成下拉框形式添加 方案二:标签…

Springboot配置http-Only

项目框架 jdk1.8、springboot2.5.10 情况一 项目中未使用(权限认证框架:Sa-Token) application.yml文件内增加配置 server.servlet.session.cookie.http-onlytrueserver.servlet.session.cookie.securetrue (此条配置建议也加上) 情况二…

宝强前经纪人宋喆出狱后首露面;美团外卖平台KeeTa;电视开机率跌至30%;朝军发射200多枚炮弹

今日精选 • Gartner 预测:到 2026 年全球 80% 的公司将在其业务中使用生成式 AI• 美团旗下外卖平台KeeTa在全港已有约31%市场占有率• 我国电视开机率跌至30%• 朝军发射200多枚炮弹 韩国发布避难令• 王宝强前经纪人宋喆出狱后首露面• 去年我国彩票销量超5796亿…

C++初级(三)

我们这里还是在C基础上进行对C基础语法的补充学习! 一.C数组 C数组大体和C相同,但是C数组还是有一定的区别的。 我们先看看C和C数组共同的易错点知识: 1.数组只能一次初始化。 2.如果对数组只进行一部分初始化,那么其他未初始…

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱

202402读书笔记|《当你老了》——灰蒙曙光比爱情温柔,清晨露珠比希望更可爱 《当你老了》作者叶芝,断断续续碎片时间读完的一本书,不是很惊艳,但值得一读。就因为很喜欢当你老了,所以拾起的这本书。读完知道了原来叶芝…

javafx

JavaFX JavaFX简介 JavaFX是一个用于创建富客户端应用程序的图形用户界面(GUI)框架。它是Java平台的一部分,从Java 8开始成为Java的标准库。 JavaFX提供了丰富的图形和多媒体功能,使开发人员能够创建具有吸引力和交互性的应用程…

NLP电影情绪分析项目

https://machinelearningmastery.com/develop-word-embedding-model-predicting-movie-review-sentiment/ https://machinelearningmastery.com/prepare-movie-review-data-sentiment-analysis/ 本教程分为 5 个部分;他们是: 电影评论数据集数据准备训练嵌入层训练…

火力发电厂电高压系统电弧光保护监测设备

摘要:介绍了电弧光保护装置的组成,对火力发电厂高压厂用电系统保护的现状及存在的不足进行了分析,以一个典型的2300MW火力发电厂工程为例,讨论了高压厂用电系统电弧光保护装置的设计应用方案,对电弧光保护装置的应用前景进行了展望。1联5系8电2话171微3信5同2号2 关…

PCIe 6.0生态业内进展分析总结-2

3.PCIe 6.0协议分析仪 (1)Keysight Keysight是德科技在2023年6月份对外宣布,第一款支持PCIe 6.0协议验证调试工具。 Keysight PCIe 6.0架构解决方案具备以下特点: 分析PCIe 6.0技术设计的数据链路/事务层 支持所有PCIe技术速率——从2.5 GT/s至64 GT/…

每日一道算法题day-three(备战蓝桥杯)

哈喽大家好,今天来给大家带来每日一道算法题系列第三天,让我们来看看今天的题目,一起备战蓝桥杯 题目: 小 Y的桌子上放着 n 个苹果从左到右排成一列,编号为从 11 到 n。 小苞是小 Y 的好朋友,每天她都会…

Idea live template

1:打印入参日志的配置 log.info("$methodName$ 方法入参: $argsLog$",$argsJson$); methodName:methodName() argsLog:groovyScript( "def result; def params\"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList(); for(i 0; i <…