29 SQL——事务操作

news2024/11/26 11:48:07
create  table account
(
    id   int auto_increment primary key comment '主键ID',
    name            varchar(18)           comment '姓名',
    money                    int           comment '余额'
)comment '账户表';

insert into account(id, name ,money)values(null,'张三',2000),
                                           (null,'李四',2000);





-- 转账操作(张三给李四转账1000)--正常操作
-- 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='李四';

-- 恢复数据(更新操作)
update account set money =2000 where name ='张三'or name ='李四';



-- 转账操作(张三给李四转账1000)-- 异常操作(每条SQL语句都是一个事务)
-- 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='李四';



-- 方法1
-- 解决法案,将SQL语句控制在一个事务内
select @@autocommit;--  结果为1则是事务自动提交,为0是手动提交
select @@autocommit = 0;-- 设置事务手动提交
-- 转账操作(张三给李四转账1000)
-- 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 ;





-- 方法2
select @@autocommit = 1;-- 设置事务自动提交
-- 开启事务
start transaction ;
-- 转账操作(张三给李四转账1000)
-- 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
在这里插入图片描述
方法2

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

不定积分题型简单总结

不定积分 考研数学复习笔记,用来复习知识点用,如有不足还请指出,Thanks♪(・ω・)ノ 文章目录 不定积分1 原函数/不定积分 概念和性质2 原函数存在定理3 不定积分的基本公式4 不定积分的基本计算4.1 三角代换型…

中间件-RabbitMQ

文章目录 1.什么是MQ1.1 特点1.2 MQ产品分类 2.RabbitMQ2.1.RabbitMQ介绍2.2.使用Docker安装RabbitMQ 3.SpringBoot中使用RabbitMQ3.1.SpringAMQP3.2使用步骤 1.什么是MQ RabbitMQ官方文档 消息队列(Message Queue,简称MQ):是在消息的传输过程中保存消…

SpringBoot+Vue实现校园二手系统。前后端分离技术【完整功能介绍+实现详情+源码】

前言 文章内容有点长,建议打开右侧目录导航栏查看。 这个系统基本上可以改造为其它类似的系统。后台管理基本上一致。前台进行一些页面样式的改造就可以变成一个新的系统。有时间,做几个变体系统。 闲的无聊,把大学时候做的一个系统进行了重…

git源代码管理

文章目录 git源代码管理git单人本地仓库操作创建远程仓库(github为例)多人开发与冲突分支操作SSH(安全外壳协议) git源代码管理 文档连接:https://git-scm.com/docs git是用于源代码管理,方便多人协同开发…

架构整洁之道上篇(编程范式设计原则)

目录 1.概述 2.编程范式 2.1.结构化编程 2.2.面向对象编程 2.3.函数式编程 3.设计原则 3.1.单一职责原则 3.2.开闭原则 3.3.里氏替换原则 3.4.接口隔离原则 3.5.依赖反转原则 4.小结 1.概述 软件架构的终极目标是,用最小的人力成本来满足构建和维护该系…

2023 操作系统 R 复习大纲( 适用于太理软件 21 级)

目录 01.操作系统的定义 02.操作系统的基本类型及特征 1.批处理操作系统(单、多道) 2.分时操作系统 3.实时操作系统 03.操作系统的功能及特征 04.进程的定义、特征 05.进程基本状态及其转换原因 06.进程互斥、同步 07.进程控制块的内容、作用 …

Java数据类型之整数类型与浮点数

标识符(名字) 作用域 离其最近的大括号 { } !!! 数据类型的分类 赋值时,不可超过数据类型的范围(不可越界) 常量的进制转换 tips:给变量赋值时,值可以为不同…

从代码层面理解Transformer

跑通 代码使用的是 https://github.com/jadore801120/attention-is-all-you-need-pytorch, commit-id 为: 132907d 各模块粗览 Transformer 主要包括一堆参数, 以及encoder和decoder forward的时候主要做了如下操作. 先 pad_mask过encoder过decoder输出logit 从train.py …

C语言-【指针一】-【什么是指针/指针类型】

对于初学者来说,是不是一提到指针,大家就头疼啊,哈哈哈,当然,它都这么“吓人”了,那么在C语言中扮演的角色也很重要,当然,它也是C语言中的一个特色,如果我们把它拿下的话…

ESP32CAM,点亮一个LED(Arduino平台)

前言 (1)在此,吐槽一下乐鑫的函数介绍,真的难找。恶心的一批。气死我了。 (2)接下来我将会介绍我是如何找到ESP32的Arduino平台的函数库的。你将会知道为啥我这么大的戾气。 (3)同时…

linux系统中输入与输出重定向

什么是输入输出重定向 我们在日常工作中最常用的是输出重定向,输出重定向就是将原本要打印到屏幕中的信息重定向到一个文件中。而输入重定向呢就是指把文件导入到命令中去,听起来是不是有点抽象啊,后面看博主举例说明就很好理由啦。 输出重定…

通讯录信息管理系统

系列文章 任务50 通讯录信息管理系统 文章目录 系列文章一、实践目的与要求1、目的2、要求 二、课题任务三、总体设计1.存储结构及数据类型定义2.程序结构3.所实现的功能函数4、程序流程图 四、小组成员及分工五、 测试插入按编号查找按姓名查找按城市查找更新排序浏览删除统计…

超好玩C++控制台打飞机小游戏,附源码

我终于决定还是把这个放出来。 视频在这:https://v.youku.com/v_show/id_XNDQxMTQwNDA3Mg.html 具体信息主界面上都有写。 按空格暂停,建议暂停后再升级属性。 记录最高分的文件进行了加密。 有boss(上面视频2分47秒)。 挺好…

轻松转换CAJ文件为PDF格式:免费工具和技巧

在处理中国知网(CNKI)数据库中的CAJ文件时,将其转换为更常用的PDF格式可以提供更广泛的共享和便捷的阅读体验。本文将介绍一种免费的工具和一些技巧,帮助您轻松地将CAJ文件转换为PDF格式。我们将使用记灵在线工具进行操作。 记灵…

推荐几本提高程序员职业素养的书

如果你是一名程序员,想要提长自己,那么这几本书推荐给你。 1、好代码 ,坏代码 为了写出优良的代码,我们必须对手上的方案有合理的判断,并彻底想清楚特定方法的结果(好的和坏的)。为此&#xff…

F检验.医学统计实例详解

F检验是一种重要的医学统计方法,常用于检验两个或多个样本的方差是否相等,也被称为方差齐性检验。方差齐性检验是医学研究中的基本方法,因为许多重要的统计分析都要求样本方差相等,如方差分析、t检验等。以下将介绍F检验的基本原理…

简单上手Scrapy框架

创建一个Scrapy框架的爬虫程序 安装Scrapy库,直接通过pycharm搜索Scrapy进行安装即可 在终端执行 scrapy startproject 项目名 scrapy startproject Learn 示例 即可创建名为Learn的Scrapy程序,成功创建项目后,会已项目名称创建一个文件夹&…

FTP和SSH连接远程终端Ubuntu

安装好ubuntu后是默认没有ssh服务和ftp服务的,我们需要自己解决一下这个问题 SSH 更新软件列表和软件 sudo apt-get update sudo apt-get upgrade安装ssh sudo apt-get install ssh启动ssh服务 sudo /etc/init.d/ssh start修改ssh服务配置文件 sudo vim /etc/…

前端工程化:发布一个属于自己的规范 npm 包

初始化项目 首先在github创建一个仓库,协议选择MIT,gitignore选择Node,添加README.md描述文件。使用git clone将项目克隆到本地。cd 进入目录,使用vscode打开(终端输入code . 命令即可)。 然后创建一个合理…

CentOS-7 安装 MariaDB-10.8

一、安装之前删除已存在的 Mysql/MariaDB 1 查找存在的 MariaDB # 注意大小写 rpm -qa | grep MariaDB # rpm -qa 列出所有被安装的rpm package (-qa:query all) rpm -qa | grep mariadb # grep (缩写来自Globally search a Regular Expre…