Mysql数据库核心技术(二十三)innodb事务

[复制链接]
查看: 1777|回复: 31
发表于 2023-1-20 10:55:34 | 显示全部楼层 | 阅读模式
首先说一下何为事务。由于在实际工作中,往往都需要连续执行一系列sql语句来完成一件事。例如:银行的转账操作,从A账户转出,B账户转入,这才算一次完整的转账操作。假设有这样一种情况:当A账户转出后,由于意外因素导致B账户转入的操作没有执行,那将是一个天大的问题,这时我们就需要用到事务来操作了。
事务是将多条sql语句放在一个包中,这些语句要么一起执行,要不一起不执行。
而且事务还支持回滚,当我们确认操作是正确时,执行提交事务操作才会修改数据库中的数据。



下面我们先来创建一张测试表
  1. create table bank(`card` char(4) primary key comment '卡号',`money` decimal(10,2) not null)engine=innodb charset=utf8;
复制代码
语句解释:
  1. 创建一张bank表,表中有card和money两个字段,数据引擎为innodb,存储编码为utf8.
复制代码
执行结果如下:
Mysql数据库核心技术(二十三)innodb事务

插入两条数据:
  1. insert into bank values ('1001',1000),('1002',1);
复制代码
Mysql数据库核心技术(二十三)innodb事务

下面我们模拟从卡号为1001的账户中转账给卡号为1002的账户。
1、开启事务
  1. begin;
复制代码
2、执行sql语句
  1. update bank set money=money-100 where card='1001';
  2. update bank set money=money+100 where card='1002';
复制代码


执行结果如下:
Mysql数据库核心技术(二十三)innodb事务

此时,假设我们的操作不正确,可以通过回滚事务来恢复数据。
3、回滚事务
  1. rollback;
复制代码
Mysql数据库核心技术(二十三)innodb事务

此时,数据又变成了原始数据。在生产环境中,开启事务与提交事务都是通过编程语言根据逻辑判断结果来执行的。
下面我们来提交事务,事务一经提交,数据库中的数据就发生了改变,无法再回滚。
4、提交事务
  1. commit;
复制代码
我们重新操作一遍,如下:
Mysql数据库核心技术(二十三)innodb事务

另外,事务还支持设置回滚点,允许我们回滚到指定的位置。
5、设置回滚点
  1. savepoint a1;
复制代码


语句解释:
  1. 设置回滚点a1,回滚时只要rollback to a1即可;
复制代码


下面来做实验:

Mysql数据库核心技术(二十三)innodb事务

ok,以上的就是事务的核心操作,大家自己动手练习一下。
易博软件介绍
发表于 2023-1-31 00:09:49 | 显示全部楼层
很有条理,每一节都是干货
发表于 2023-1-31 07:44:26 | 显示全部楼层
非常好,很容易理解
发表于 2023-1-31 15:17:15 | 显示全部楼层
老师辛苦了

0

主题

25

帖子

13

积分

终身会员

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分
13
发表于 2023-2-1 03:49:44 | 显示全部楼层
顶起来,学mysql的快来看
发表于 2023-2-1 19:52:16 | 显示全部楼层
这么好的教程希望更多人看到
发表于 2023-2-2 10:57:22 | 显示全部楼层
我又来卷了

0

主题

15

帖子

8

积分

营销入门

Rank: 2

积分
8
发表于 2023-2-14 22:07:56 | 显示全部楼层
讲的很清楚,好教程!

0

主题

11

帖子

7

积分

终身会员

Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25Rank: 25

积分
7
发表于 2023-2-16 09:59:53 | 显示全部楼层
教程最难得是将各类知识点归纳起来讲,这样才不凌乱,楼主做到了

0

主题

10

帖子

6

积分

营销入门

Rank: 2

积分
6
发表于 2023-2-18 19:26:58 | 显示全部楼层
已经学了一大半了,重新过来复习一下
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1、请认真发帖,禁止回复纯表情,纯数字等无意义的内容!帖子内容不要太简单!
2、提倡文明上网,净化网络环境!抵制低俗不良违法有害信息。
3、如果你对主帖作者的帖子不屑一顾的话,请勿回帖。谢谢合作!
3、问答求助区发帖求助后,如有其他用户热心帮您解决问题后,请自觉点击设为最佳答案按钮。

 
 
QQ在线客服
QQ技术支持
工作时间:
8:00-18:00
软著登字:
1361266号
官方微信扫一扫
weixin

QQ|小黑屋|Archiver|慈众营销 ( 粤ICP备15049986号 )|网站地图

自动发帖软件 | 自动发帖器 | 营销推广软件 | 网络营销工具 | 网络营销软件 | 网站推广工具 | 网络推广软件 | 网络推广工具 | 网页推广软件 | 信息发布软件 | 网站推广工具 | 网页推广软件

Powered by Discuz! X3.4   © 2012-2020 Comsenz Inc.  慈众科技 - Collect from 深圳吉宝泰佛文化有限公司 公司地址:罗湖区黄贝街道深南东路集浩大厦A1403

返回顶部 返回列表