事务:让数据操作"要么全成功,要么全失败"!|转行学DB第10天

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
PolarDB Agent Express,2核4GB
RDS Agent(兼容OpenClaw),2核4GB
简介: 数据库小学妹带你轻松掌握事务!转账不丢钱、数据不混乱的秘密,就在ACID四大特性——原子性(全做或全不做)、一致性、隔离性、持久性。用START TRANSACTION开启,COMMIT提交,ROLLBACK回滚,保障多步操作安全可靠。

💡转账不会出错的秘密武器,数据安全的守护神!

大家好呀!我是​数据库小学妹​👋

前几篇我们学会了各种查询和优化技巧,索引也让查询飞了起来。但在实践中我又遇到了新问题:

你给朋友转账100块,数据库会不会只执行一半?你账户扣了钱,对方账户的余额却没增加?

这个问题,靠普通SQL语句是解决不了的。

所以,数据库专门有​事务​——它就像“要么全干,要么不干”的保险箱。

一、从一个真实场景说起

假设你要从A账户转100元到B账户。在数据库里,这条转账操作要分两步:

  1. UPDATE account SET money = money - 100 WHERE name = 'A';
  2. UPDATE account SET money = money + 100 WHERE name = 'B';

如果第一步执行完,数据库突然崩溃了(断电、网络中断),第二步没执行。结果就是:​A少了100块,B没多​——钱凭空蒸发了!

事务就是用来解决这个问题的。 它把这两个步骤​打包成一个整体​:要么两步都成功,要么两步都失败(回滚到转账前的状态)。

💡 事务就像网上购物下单——要么订单成功(扣库存+生成订单+扣款),要么订单失败(什么都不变),不会出现“库存扣了但订单没生成”的情况。

二、事务的四个特性(ACID)

数据库专家给事务总结了四个特性,首字母缩写就是​ACID​(酸)。记不住没关系,我帮你翻译成人话:

特性 英文 通俗解释
原子性 Atomicity 打包成一个整体,要么全做,要么全不做
一致性 Consistency 转账前后,总金额不变(A+B的钱总和固定)
隔离性 Isolation 你转你的钱,我转我的钱,互不干扰
持久性 Durability 一旦转账成功,就算断电也不会丢

💡 新手只需要先记住​原子性​(打包)和​持久性​(不丢),隔离性后面再深入。

三、事务怎么用?BEGIN、COMMIT、ROLLBACK

在MySQL里,事务的默认行为是:每一条SQL​​语句自动提交​(autocommit=1)。也就是说,你写个UPDATE,它直接就执行了,没法撤回。

要手动控制事务,需要先关闭自动提交,或者用命令显式开始。

基本语法

-- 开始一个事务
START TRANSACTION;   -- 或者 BEGIN;

-- 执行一堆SQL
UPDATE account SET money = money - 100 WHERE name = 'A';
UPDATE account SET money = money + 100 WHERE name = 'B';

-- 如果一切顺利,提交事务(真正生效)
COMMIT;

-- 如果出错了,回滚事务(撤销所有操作)
ROLLBACK;

实战演示

START TRANSACTION;

UPDATE account SET money = money - 100 WHERE name = 'A';
-- 假设这里发现A余额不足,报错了

ROLLBACK;   -- 撤销上面的UPDATE,A的钱没变

记住: COMMIT 之后,数据就真的改了,ROLLBACK 也救不回来了。所以提交前一定确认好!

四、事务的隔离级别(简要了解)

当多个事务同时操作同一行数据时,会互相干扰。比如你正在转账,别人也在查你的余额。数据库提供了几种隔离级别来控制这种干扰。
1.png

💡 新手阶段,知道MySQL默认是可重复读就够了。等遇到“同一个事务里查两次结果不一样”的怪现象时,再回来研究隔离级别。

五、什么时候必须用事务?

✅ 必须使用事务的场景

2.png

❌ 可以不用事务的场景

3.png

六、新手避坑指南(血泪总结)

4.png

七、今日学习心得

今天的内容总结成三句话:

  1. 事务就是把多个操作打包​,要么全成功,要么全失败
  2. 用 ​START TRANSACTION​ 开始,COMMIT​ 提交,ROLLBACK​ 回滚
  3. MySQL默认隔离级别是​​可重复读​,新手先用默认的就好

👋 我是​数据库小学妹​,一个从设计转行数据库的菜鸟。

本文为个人学习总结,所有命令均在MySQL​ 8.0环境下验证。事务是保证数据一致性的核心,写多表操作时记得加上。

相关文章
|
1月前
|
SQL 关系型数据库 MySQL
数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天
用生活化比喻(如字典目录)详解索引原理:它通过B+树结构加速查询,避免全表扫描;涵盖创建、查看、删除索引方法,联合索引的最左前缀原则,以及读写平衡等实战要点——让查询从“等几秒”变“秒出”!
数据量大查询慢?索引让你的SQL秒级响应!|转行学DB第9天
|
人工智能 运维 关系型数据库
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
RDS AI 助手旗舰版在 RDS AI 助手专业版智能运维能力的基础上,提供灵活模型选择、智能模型路由、多模型灾备、API Key 集成等更自主可控、灵活便捷的模型服务,并支持纳管运维各类环境部署的数据库。
智能运维+多模型服务能力,阿里云 RDS AI 助手旗舰版正式上线!
|
1月前
|
SQL NoSQL 关系型数据库
数据库分类一次讲清|转行学DB第2天
数据库小学妹(UI转行萌新)用通俗语言拆解数据库分类:从关系型(MySQL/Oracle)、NoSQL(Redis/MongoDB/Cassandra)、NewSQL(TiDB)到2026年爆火的向量数据库(Pinecone/Milvus),按数据模型、部署架构、业务负载三大维度梳理,配场景化案例与选学路径,助新手轻松入门。
|
9天前
|
canal 缓存 NoSQL
数据库扛不住高并发?Redis缓存+双写一致性:给你的系统装上“涡轮增压”
数据库小学妹带你破解Redis缓存一致性难题!面对高并发,如何确保Redis与数据库数据同步?详解“先更库后删缓”“延时双删”“Binlog异步同步”等4大方案,直击雪崩、击穿、穿透三座大山,助你构建又快又稳的数据库架构.
|
11天前
|
API Windows
OpenClaw(小龙虾) 连接 阿里云百炼图文教程
本指南详解OpenClaw Windows版对接阿里云百炼的完整流程:从账号准备、API Key创建与保存,到OpenClaw内配置密钥、测试连通性及模型调用,全程图文指引,零基础10分钟即可完成接入,畅享Qwen3系列大模型能力。(239字)
OpenClaw(小龙虾) 连接 阿里云百炼图文教程
|
12天前
|
机器学习/深度学习 自然语言处理 搜索推荐
大模型应用开发核心认知与技巧指引:从提示工程到智能Agent的完整实践.111
本文系统讲解大模型应用开发核心路径:从API调用基础,到提示工程(结构化指令、Few-shot、思维链CoT),再到高阶智能Agent(感知-思考-行动-反馈闭环)。强调“目标式编程”范式转变,聚焦如何驾驭大模型解决非结构化问题,助力开发者快速落地实用应用。
176 6
|
1月前
|
人工智能 数据可视化 Linux
Hermes Agent 是什么?怎么部署?保姆级图文教程
Hermes Agent 是 Nous Research 推出的开源自主 AI 智能体,主打持久运行、自我成长、越用越强,采用 MIT 开源协议,可部署在云端或本地服务器,具备跨会话记忆、自动生成与优化技能、多平台接入、多模型切换能力,能从工具逐步变成贴合个人习惯的智能助手。它与 OpenClaw 高度兼容,内置迁移命令,可一键导入原有配置、记忆、技能与密钥,降低切换成本。
805 4
|
26天前
|
数据采集 缓存 运维
IP查询工具如何评估IP负载?云上资源分配的实战方法
我们曾因P99延迟骤升盲目扩容无效,最终靠IP分桶定位到某云厂商ASN段的爬虫流量。IP查询工具不测性能,而是为请求打标签(ASN/代理类型/风险分等),结合监控数据精准识别“谁拖垮了系统”。分四类桶、设三条件、按优先级调度(分流>限流>扩容>封禁),离线缓存+二次验证,避免误伤。
|
16天前
|
人工智能 监控 前端开发
AI智能体的开发流程
AI智能体开发已升级为融合软件工程与大模型特性的系统工程,涵盖需求定义、知识工具集成、核心开发、评测对齐、部署监控五大阶段,强调分治设计、闭环迭代与商业级稳定性。(239字)
|
1月前
|
SQL 关系型数据库 MySQL
SQL优化十大技巧,查询速度提升10倍!
数据库小学妹带你轻松提速SQL!10个实战优化技巧:精简SELECT、善用LIMIT、巧用EXPLAIN、合理建索引、避开函数索引失效、JOIN优于子查询、IN替代OR、批量操作、EXISTS优化大子查询、定期OPTIMIZE。附避坑指南,新手也能秒上手!