• 0
  • 0
分享

让我们看一下最简单形式的语法:

START TRANSACTION;
{sql statement 1}
{sql statement 2}
...
...
COMMIT;

MySQL 事务包含指示事务开始和结束的命令以及允许 MySQL 引擎执行必要的提交或回滚操作的其他选项。

  • START TRANSACTION:它指的是事务的开始/发起。此时内部自动提交已关闭,即除非明确提交,否则不会提交语句。

  • MySQL 语句:事务中可以有多个相关语句,这些语句将全部执行或不执行。

  • COMMIT:这是指事务的最终语句,它指示 MySQL 引擎将所做的更改写入。

让我们看一个例子。

我们还将在中间阶段通过创建 MySQL 的新会话并查询受尚未提交的事务影响的表来验证 MySQL 事务。

场景:假设有一个银行账户表,我们在其中进行银行内部转账,即持有账户 A 的人试图将 100 美元转移到账户 B。

场景的 CREATE TABLE 语句:

CREATE TABLE bankaccounts(accountno varchar(20) PRIMARY KEY NOT NULL, funds decimal(8,2));

添加名为 ACC1 和 ACC2 的 2 个帐户的信息,每个帐户的初始资金余额为 1000 美元。

INSERT INTO bankaccounts VALUES("ACC1", 1000);
INSERT INTO bankaccounts VALUES("ACC2", 1000);

现在,让我们看看下面的交易语句:

START TRANSACTION or BEGIN; --statement1
UPDATE bankaccounts SET funds=funds-100 WHERE accountno='ACC1'; --statement2
UPDATE bankaccounts SET funds=funds+100 WHERE accountno='ACC2'; --statement3
COMMIT; --statement4

请注意,我们已将上述事务中的语句从 statement1 命名为 statement4。

交易报表流程如下:

  • START TRANSACTION:此行指示 MySQL 开始或启动事务。

  • 需要执行的语句。

  • COMMIT 代表事务的终止。

为了查看事务的中间状态是否已提交,我们将在事务中执行借记语句,并创建一个新的 MySQL 事务来查询帐户表。

让我们在上面的事务中执行 statement1 和 statement2 并打开一个新的 MySQL 会话(使用工作台等 UI 客户端或通过命令行客户端)并运行 SELECT 语句以获取我们表中资金的详细信息。

从银行账户中选择 *;

输出如下:

1661765135475.jpg

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   岁月是把杀猪刀,悄咪咪地架在我们的脖子上。我们这些别人眼中的“老司机”,一直行走在IT行业的测试老鸟,已经/正在/即将踏上35岁的尴尬年龄,面临前有强敌,后有追兵的复杂境况,真是各种为难。  所以,你身边35岁以上的测试员,现在都在干嘛?  面对这样的灵魂拷问,总是有人欢喜有人忧……来看看他们的答案,找到自己要走的路!  @享受现在  “25和35有区别吗?反正你都得拼了命的找bug,除了赚钱请别跟我谈别的”  @曾经的王者,现在的青铜  “作为高考精英进入了测试这一行,让我有了很强的优越感。然而 IT行业日趋迅猛,长江后浪推前浪,35岁的测试员如果想凭学历和经验站稳脚跟不太现实,技术更新...
            1 1 1131
            分享
          •   法国网站 Numerama 就本月早些时候推出的新款 iPad Pro 采访了苹果公司的三位高级员工。虽然讨论没有透露太多新细节,但提到了未来 iPad 的一个潜在变化。  iPad Pro 2024 太空黑 iPad 背面的苹果徽标在垂直方向上是直立的,但在连接键盘的情况下,设备通常是横向使用的,这就导致苹果徽标会横着出现。在新款 iPad Pro 和 iPad Air 上,苹果已经将前置摄像头移到了较长的右侧边缘,这样当设备横向使用时,摄像头就会出现在顶部中央。  随着横向使用越来越流行,苹果产品设计师莫莉-安德森(Molly Anderson)表示,未来的 iPad 有可能采用横向苹...
            0 0 816
            分享
          • 对于那些正在认真寻求如何测试或者进一步改善测试效果的团队和组织来说,可以研究下业界大佬是如何组织测试和质保活动的,肯定能学到不少东西。显而易见的是,诸如谷歌、微软和亚马逊这样的公司,如果不是对产品质量给予了恰当的关注,不可能像现在这样成功。但是对这些软件巨头们的研究表明,成功并没有放之四海而皆准的秘诀。我们可以一起来学习一下世界上最著名的五家公司是如何组织他们的质量保证工作的。谷歌- 寻找最佳实践谷歌,这个世界上最大的搜索引擎公司,是如何组织测试工作的呢?这要视产品和团队而定。举个例子,负责搜索引擎的团队,维护了一个庞大又严谨的测试框架。因为搜索是谷歌的核心业务,团队想要保证持续地、高质量的交...
            0 0 1851
            分享
          • 常用的Android自动化测试框架包括UIAutomator、Appium以及Monkeyrunner等;其中,UIAutomator是谷歌在发布Android4.1版本时推出的一款基于Java语言的UI测试框架,由此,UIAutomator只能运行在4.1及其以上版本中。本篇文章将为大家介绍如何搭建基于Java+UIAutomator的测试环境。一、UIAutomator简介首先,作为Google自家推出的一款开源的UI自动化测试框架,其稳定性和可靠性可以得到极大的保障,运行时也有更多的权限。其次,UIAutomator可以跨进程操作,运行速度较快;但是UIAutomator不支持Andro...
            0 0 1452
            分享
          •   摘要:随着系统逐步由单体架构向分布式微服务架构转型,直接面临因系统重构、底层技术栈升级、系统间交互增多等变化因素带来的系统可靠性风险。混沌测试是一种对系统开展可靠性验证的有效测试手段。  在混沌测试开展的过程中,一大挑战是测试场景如何选取。测试人员通常会面临两难的局面,当场景选的较少时担心覆盖不全、验证不够充分,场景选取的多时又无法做到穷举各类场景、执行过多场景花费时间和人力成本较高等问题。因此一种合理的故障场景分析方法是不可或缺的。  一、基于容错视角的故障场景分析方法  在面对测试场景发散或疏漏的问题上我们发现,虽然系统发生的故障种类繁多,但故障处置手段却是有限的,诸如启停、隔离、切换...
            0 0 811
            分享
      • 51testing软件测试圈微信