MySQL的事务相关的语句的使用

news2024/11/18 8:20:05

MySQL的事务相关的语句的使用

事务是数据库管理系统执行过程中的一个程序单位,由一个或多个数据库操作组成。MySQL作为一款流行的关系型数据库管理系统,支持事务处理,允许用户定义一系列的操作,这些操作要么完全执行,要么完全不执行,保证了数据库的完整性和一致性。

事务的基本概念

事务通常用于处理需要多个步骤的复杂操作,而这些步骤必须完整执行,不能只执行部分。在MySQL中,事务的处理依赖于存储引擎,最常见的支持事务的存储引擎是InnoDB。

事务的四大特性(ACID)

  • 原子性(Atomicity):事务是数据库的基本操作单元,它的原子性保证了操作要么全完成要么全不完成。
  • 一致性(Consistency):事务必须使数据库从一个一致性状态转换到另一个一致性状态。
  • 隔离性(Isolation):事务的执行不应受其他事务的干扰。
  • 持久性(Durability):一旦事务提交,则其所做的修改将永久保存在数据库中。

在MySQL中,你可以使用以下SQL语句来控制事务的开始、执行和结束。

事务基本语法

START TRANSACTION
    [transaction_characteristic [, transaction_characteristic] ...]

transaction_characteristic: {
    WITH CONSISTENT SNAPSHOT
  | READ WRITE
  | READ ONLY
}

BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}

START TRANSACTIONBEGIN

这两个命令用于启动一个新的数据库事务。BEGINSTART TRANSACTION 的简写形式,功能相同。

  • WITH CONSISTENT SNAPSHOT: 在事务开始时创建一个一致性视图。这意味着事务可以看到一个一致的数据库快照,而不受并发事务中的更新操作影响。
  • READ WRITE: 指定事务可以进行读取和写入操作。这是默认设置。
  • READ ONLY: 指定事务只能进行读取操作,不允许写入。这可以优化事务的执行,因为数据库系统知道不需要处理可能的写冲突。

COMMIT

COMMIT 语句用于提交当前事务中的所有更改,使它们成为数据库中的永久更改。

  • WORK: 这是一个可选关键字,用于明确指示提交的是工作事务。通常不是必需的,因为其默认即为操作事务。
  • AND CHAIN: 自动开始一个新的事务,该事务继承当前事务的属性。适用于需要连续处理多个事务的场景。
  • AND NO CHAIN: 结束当前事务后不自动开始新事务。
  • RELEASE: 提交事务并断开当前的数据库连接。
  • NO RELEASE: 提交事务但不断开数据库连接。

ROLLBACK

ROLLBACK 语句用于撤销当前事务中的所有更改,回到事务开始前的状态。

  • COMMIT 类似,ROLLBACK 也可以用 WORK, AND CHAIN, AND NO CHAIN, RELEASE, NO RELEASE 这些选项来控制事务的结束行为和连接的状态。

SET autocommit

SET autocommit 用于控制MySQL的自动提交行为。当 autocommit 设置为1时,每个SQL语句都会被视为一个独立的事务并自动提交。设置为0时,SQL语句不会自动提交,需要显式使用 COMMIT 来提交事务。

  • SET autocommit = 0;: 关闭自动提交。
  • SET autocommit = 1;: 开启自动提交。

常用的事务控制语句

开始一个事务

事务的开始通常使用START TRANSACTIONBEGIN声明。

START TRANSACTION;
-- 或者
BEGIN;

提交一个事务

提交事务意味着所有在事务块内的语句都被执行,并且修改永久保存到数据库中。

COMMIT;

回滚一个事务

如果在执行事务过程中发生错误或者用户主动决定取消事务的执行,可以使用ROLLBACK语句来撤销所有未提交的修改。

ROLLBACK;

设置保存点

在事务中,你可以通过设置保存点(SAVEPOINT)来进行局部的回滚。这是非常有用的功能,可以在事务中的任何点保存当前状态,之后你可以回滚到这个状态而不影响其他的操作。

SAVEPOINT savepoint_name;
ROLLBACK TO savepoint_name;

释放保存点

如果确定不再需要某个特定的保存点,可以使用RELEASE SAVEPOINT语句来释放它。

RELEASE SAVEPOINT savepoint_name;

设置事务的隔离级别

为了控制事务如何通过锁定机制与其他事务隔离,可以设置事务的隔离级别。MySQL支持以下四种隔离级别:

  • READ UNCOMMITTED
  • READ COMMITTED
  • REPEATABLE READ(默认级别)
  • SERIALIZABLE

设置隔离级别的语句如下:

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;

示例:使用事务处理

考虑一个银行转账的场景,其中涉及到两个账户的余额更新。这里展示如何使用事务来确保操作的原子性。

START TRANSACTION;

UPDATE accounts SET balance = balance - 100 WHERE name = 'Alice';
UPDATE accounts SET balance = balance + 100 WHERE name = 'Bob';

-- 如果以上操作都成功执行,提交事务
COMMIT;

-- 如果有任何错误发生,回滚事务
ROLLBACK;

参考链接

  • MySQL事务处理:MySQL官方文档
  • InnoDB存储引擎:InnoDB存储引擎介绍

在这里插入图片描述

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

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

相关文章

西安大秦时代

西安大秦时代 大秦软件 公司简介 about us 西安大秦时代是技术型公司,技术领先是我们赖以生存的 基础!服务是技术的延续,让客户满意,是我们服务的目 标,也是公司的生存之本! 产品服务 西安大秦时代拥有…

【面试经典 150 | 数组】最后一个单词的长度

文章目录 写在前面Tag题目来源解题思路方法一:遍历 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更…… 专栏内容以分析题目为主,并附带一些对于本题涉及到的数据结构等内容进行回顾…

Hdu1068 Girls and Boys【二分图最大独立集】

Girls and Boys 题意 有 n n n 个学生,每个学生可能和若干个其他异性学生有过恋爱关系 现在要选择一些学生形成集合,使得集合内任意两个学生之间都没有过恋爱关系 思路 把学生抽象成点,恋爱关系抽象成边,题意即是求&#xff1…

ASP.NET基于WEB的选课系统

摘要 设计本系统的目的是对选课信息进行管理。学生选课系统维护模块主要完成的是系统管理与维护功能。课题研究过程中,首先对系统管理模块进行了详尽的需求分析,经分析得到系统管理模块主要完成如下的功能:用户基本信息、选课信息的录入,查看…

腾讯云优惠服务器购买攻略,想省钱,看这篇文章就够了

购买腾讯云服务器省钱攻略,先搞个腾讯云新用户身份,然后先领取云服务器优惠代金券,最后在腾讯云官方特价活动上下单购买。目前腾讯云服务器优惠价格61元一年、新老同享2核2G4M带宽99元一年、2核4G5M服务器165元一年、4核8G服务器646元15个月&…

基于Vue3的openlayers地图显示

基于Vue3的openlayers地图显示 (1)接着上一篇将讲,在components文件夹下创建BaseMap.vue文件夹 (2)在App.vue文件里面引入BaseMap.vue文件,如下代码所示: (3)在BaseMa…

upload-labs第十七十八关

第十七关 $is_upload false; $msg null;if(isset($_POST[submit])){$ext_arr array(jpg,png,gif);$file_name $_FILES[upload_file][name];$temp_file $_FILES[upload_file][tmp_name];$file_ext substr($file_name,strrpos($file_name,".")1);$upload_file …

上位机图像处理和嵌入式模块部署(树莓派4b进行驱动的编写)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 树莓派4b上面还支持驱动代码的编写,这是我没有想到的。这里驱动,更多的是一种框架的编写,不一定是编写真正的驱…

大珩PPT助手一键颜色设置

大珩PPT助手最新推出的一键设置文字颜色和背景色功能,为用户在创建演示文稿时带来了更便捷、高效的体验。这一功能使用户能够轻松调整演示文稿中文字的颜色和幻灯片的背景色,以满足不同场合和主题的需要。 以下是该功能的几个关键特点和优势&#xff1a…

opencv的cmake报错

opencv编译报错 CMakeDownloadLog.txt #use_cache "D:/opencv/.cache" #do_unpack "ippicv_2021.8_win_intel64_20230330_general.zip" "71e4f58de939f0348ec7fb58ffb17dbf" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/1…

【Linux系统编程】第六弹---权限的概念

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、什么是权限 2、权限的本质 3、Linux中的用户 4、Linux中文件的权限 4.1、文件访问者的分类(角色) 4.2、文件类型和访问权…

书生浦语训练营第2期-第4节笔记

一、为什么要微调? 1. 适应特定任务或领域:虽然预训练的模型通常具有广泛的知识和理解能力,但它们可能不完全适应特定任务的需求。通过在特定的数据集上微调模型,可以使模型更好地理解和处理与特定任务或领域相关的数据。 2. 提高…

氮气柜是如何进行温度、湿度和氧含量控制的?

氮气柜的温湿度控制标准并不统一,具体设定值主要取决于所存储物料的特性与存储要求。 氮气柜的温度一般不直接控制,而是显示并反映柜内当前的环境温度,因为氮气柜的设计重点在于除湿而非降温。在某些高端应用场合,尤其是精密电子元…

软件杯 深度学习实现语义分割算法系统 - 机器视觉

文章目录 1 前言2 概念介绍2.1 什么是图像语义分割 3 条件随机场的深度学习模型3\. 1 多尺度特征融合 4 语义分割开发过程4.1 建立4.2 下载CamVid数据集4.3 加载CamVid图像4.4 加载CamVid像素标签图像 5 PyTorch 实现语义分割5.1 数据集准备5.2 训练基准模型5.3 损失函数5.4 归…

Spring Boot中JUnit 4与JUnit 5的如何共存

文章目录 前言一、先上答案二、稍微深入了解2.1 maven-surefire-plugin是什么2.2 JUnit4和JUnit5有什么区别2.2.1 不同的注解2.2.2 架构 前言 在maven项目中,生成单测时是否有这样的疑问:该选JUnit4还是JUnit5?在执行 mvn test 命令时有没有…

NetFlow 监控工具

NetFlow 是流量数据统计使用最广泛的标准,它是由思科公司开发,用于监控和记录传入或传出接口的所有流量,NetFlow 分析其收集的流量数据,以提供流量和流量的可见性,并跟踪流量的来源、去向以及随时产生的流量。记录的信…

使用selenium时出现element click intercepted报错的解决办法

win10,python3.8.10。 selenium版本如下(用pip38 show selenium查看): 在定位中,定位了一个按钮(特点:button下还有span然后才是文本),代码如下: from sele…

Scala 03 —— Scala OOP Extension

Scala 2.1 —— Scala OOP Extension 一、正则 文章目录 Scala 2.1 —— Scala OOP Extension一、正则1.1 Java正则和Scala正则的区别1.2 Java正则和Scala正则的的基本知识点Java正则Scala正则 1.3 练习练习一:使用正则表达式解析日志方法一:使用findAl…

Oracle交换分区测试

1、用exchange分区表减少初始化过程中对业务中断的影响 2、创建分区表 create table t_p (id number,name varchar2(30),addr varchar2(50)) partition by range(id) (partition p1 values less than(10), partition p2 values less than(20), partition p3 values less …

冯唐成事心法笔记

文章目录 卷首语 管理是一生的日常,成事是一生的修行PART 1 知己 用好自己的天赋如何管理自我用好你的天赋成大事无捷径如何平衡工作和生活做一个真猛人做自己熟悉的行业掌控情绪如何对待妒忌和贪婪如何战胜自己,战胜逆境真正的高手都有破局思维有时候…