MySQL——事务与存储过程(一)事务管理(2)事务的提交

2024-08-30 03:04

本文主要是介绍MySQL——事务与存储过程(一)事务管理(2)事务的提交,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        现实生活中,许多操作都是需要用户确认的,例如在删除一个文档时,当选择删除时,会弹出一个提示对话框,包含两个按钮“确定”和“取消”,如果单击“确定”按钮该文档才会删除。同理,在数据库中,有些命令的使用也是需要被确认的,例如事务中的操作就需要用户确认,当用户确认提交后,事务中的操作才会执行成功,这个过程就是手动提交的过程,接下来针对事务的提交进行详细的讲解。

        为了说明事务的提交方式为手动提交,接下来,在前面的基础上进行操作,这时的a账户有 900 元钱,b账户有 1100 元钱,开启一个事务,使用 UPDATE 语句实现由 b账户向a账户转 100元钱的转账功能,具体语句如下:

START TRANSACTION;UPDATE account SET money=money+100 WHERE name='a';UPDATE account SET money=money-100 WHERE name='b';

        上述语句执行成功后,可以使用 SELECT 语句来查询 account 表中的余额,查询结果如下:

mysql> SELECT * FROM account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.01 sec)

        从上述结果可以看出,在事务中实现了转账功能。此时,退出数据库然后重新登录,并查询数据库中各账户的余额信息,查询结果如下:

mysql> SELECT * FROM account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |   900 |
|  2 | b    |  1100 |
+----+------+-------+
2 rows in set (0.00 sec)

        从上述结果可以看出,事务中的转账操作没有成功,这是因为在事务中转账成功后还没有提交事务就退出数据库了,由于事务中的语句不能自动提交,因此当前的操作。被自动取消了。接下来再次执行上述语句,然后使用 commit 语句来提交事务,具体语句如下:

START TRANSACTION;UPDATE account SET money=money+100 WHERE name='a';UPDATE account SET money=money-100 WHERE name='b';COMMIT;

        上述语句执行成功后,退出数据库然后再重新登录,使用 SELECT 语句查询数据库中各账户的余额信息,查询结果如下:

mysql> SELECT * FROM account;
+----+------+-------+
| id | name | money |
+----+------+-------+
|  1 | a    |  1000 |
|  2 | b    |  1000 |
+----+------+-------+
2 rows in set (0.00 sec)

        从上述结果可以看出,事务中的转账操作成功了。需要注意的是,由于事务中的操作都是手动提交的,因此在操作完事务时,一定要使用 COMMIT 语句提交事务,否则事务操作会失败。

这篇关于MySQL——事务与存储过程(一)事务管理(2)事务的提交的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119619

相关文章

mysql中的group by高级用法详解

《mysql中的groupby高级用法详解》MySQL中的GROUPBY是数据聚合分析的核心功能,主要用于将结果集按指定列分组,并结合聚合函数进行统计计算,本文给大家介绍mysql中的groupby... 目录一、基本语法与核心功能二、基础用法示例1. 单列分组统计2. 多列组合分组3. 与WHERE结合使

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

MybatisPlus3.3.1整合clickhouse的过程

《MybatisPlus3.3.1整合clickhouse的过程》:本文主要介绍MybatisPlus3.3.1整合clickhouse的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定... 前言ClickHouse是俄罗斯Yandex发布的一款数据分析型数据库支持sql语法,详情可以访问官网,

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

MySQL数据库实现批量表分区完整示例

《MySQL数据库实现批量表分区完整示例》通俗地讲表分区是将一大表,根据条件分割成若干个小表,:本文主要介绍MySQL数据库实现批量表分区的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考... 目录一、表分区条件二、常规表和分区表的区别三、表分区的创建四、将既有表转换分区表脚本五、批量转换表为分区

宝塔安装的MySQL无法连接的情况及解决方案

《宝塔安装的MySQL无法连接的情况及解决方案》宝塔面板是一款流行的服务器管理工具,其中集成的MySQL数据库有时会出现连接问题,本文详细介绍两种最常见的MySQL连接错误:“1130-Hostisn... 目录一、错误 1130:Host ‘xxx.xxx.xxx.xxx’ is not allowed

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

sql语句字段截取方法

《sql语句字段截取方法》在MySQL中,使用SUBSTRING函数可以实现字段截取,下面给大家分享sql语句字段截取方法,感兴趣的朋友一起看看吧... 目录sql语句字段截取sql 截取表中指定字段sql语句字段截取1、在mysql中,使用SUBSTRING函数可以实现字段截取。例如,要截取一个字符串字

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

SQL Server身份验证模式步骤和示例代码

《SQLServer身份验证模式步骤和示例代码》SQLServer是一个广泛使用的关系数据库管理系统,通常使用两种身份验证模式:Windows身份验证和SQLServer身份验证,本文将详细介绍身份... 目录身份验证方式的概念更改身份验证方式的步骤方法一:使用SQL Server Management S