3 数据库事务
1. 转账操作转账是从一方扣钱另一方加钱采用数据库来模拟一下这个操作# 创建一个账户表createtableaccount(idbigintprimarykeyauto_incrementcomment账户,namevarchar(16)notnullcomment账户名称,moneybigintnotnullcomment账户余额)comment账户表;# 添加两个账户信息张三、李四一人1000大洋insertintoaccount(name,money)values(张三,1000),(李四,1000);# 模拟张三给李四转500大洋updateaccountsetmoneymoney-500whereid1;updateaccountsetmoneymoney500whereid2;转账分为两个操作需要先给一个用户扣钱再给一个用户加钱第一个扣钱的操作成功了但是因为一些其他的原因比如服务器断点或者是一些异常情况导致第二个加钱的SQL执行失败。整个转账的业务其实是失败的但是第一个的钱扣了没了。。。。。正常应当是这两个操作要么都执行成功要么都执行失败上述的转账问题就可以基于事务来解决事务可以看做是一个最小的执行单位一个事务可以由一条或者多条SQL语句组成。 一个事务操作所有的SQL语句要么都执行成功要么都执行失败。2. 事务操作首先MySQL就是开启事务的但是这个事务每执行一个DML语句都会自动的提交结束开启事务1.因为MySQL默认自动结束事务的咱们可以自己关闭这种自动结束的操作。2.也可以通过单独的指令来指定事务开始和结束的位置setAutoCommit0;--默认情况值是1代表每次自动结束事务设置为0代表需要咱们手动的结束事务。 begin;--开启手动结束事务操作需要在执行完SQL语句后自己去执行结束事务的指令 start transaction;--跟begin是一样的。。。。结束事务1.如果开启事务的所有SQL语句执行没有问题可以直接提交事务。2.如果开启事务后执行的SQL语句存在问题可以执行回滚事务操作。commit;--提交事务事务中的操作都会落到磁盘当众 rollback;--回滚事务事务中的操作全部都会恢复到事务开启之前的状态。将前面的转账操作基于事务控制解决前面的问题# 模拟张三给李四转500大洋setAutoCommit1;-- 关闭自动结束事务需要遇到commit或者rollback才会结束这个事务begin;-- 手动开启了一个事务需要遇到commit或者rollback才会结束这个事务。starttransaction;-- 也是手动开启一个事务。updateaccountsetmoneymoney-500whereid1;updateaccountsetmoneymoney500whereid2;commit;rollback;-- 事务结束有两种方式。commit提交。 rollback回滚。3. 事务的基本实现原理4. 事务的特性原子性Atomicity事务是一个最小的执行单位一次事务的操作要么都成功要么都失败。一致性Consistency表示一个事务内有一个操作失败时所有的更改过的数据都必须回滚到修改前的状态。隔离性Isolation事务查看数据操作时数据所处的状态要么是另一个并发事务修改之前的状态要么是另一个事务修改它之后的状态事务不会查看中间状态的数据。持久性Durablility事务正常提交后会将数据落到磁盘中影响是永久了。5. 事务并发问题脏读一个事务中读取到了另一个事务未提交的数据。这个问题必须要解决不可重复读一个事务中多次查询同一个数据结果不一致。原因是其他事务中对这个数据修改了并且提交事务了。幻读一个事务中多次查询同一个数据结果不一致。原因是其他事务中对某个数据进行了增删并且提交事务了。为了复现上述的问题优先将MySQL的事务隔离级别调低-- 为了查看到所有问题的效果这里优先将事务的隔离级别设置为最低等级。READ-UNCOMMITTED。setglobaltransaction_isolationREAD-UNCOMMITTED;-- 因为设置的是全局的事务隔离级别设置完毕后关闭连接重新打开才会生效。selecttransaction_isolation;复现脏读效果复现不可重复读效果复现幻读的效果6. 事务的隔离级别READ-UNCOMMITTED读未提交可以读取到未提交事务的数据。一个问题都不能解决READ-COMMITTED读已提交可以读取到已经提交事务的数据。只能解决脏读Oracle默认隔离级别是READ-COMMITTEDREPEATABLE-READ可重复读会让一次事务多次查询同一数据结果一致修改导致。可以解决脏读和不可重读MySQL默认隔离级别是可重复读REPEATABLE-READSERIALIZABLE串行化上锁所有问题都能解决。可以解决所有问题为了解决上面的各种问题这里可以设置事务的隔离级别然后查看效果查看事务的隔离级别的方式selecttransaction_isolation;设置事务的隔离级别可以设置全局的也可以针对当前连接设置。-- 全局的事务隔离级别设置。设置完需要关闭连接重新打开setglobaltransaction_isolationSERIALIZABLE;-- 当前会话的事务隔离级别设置。setsessiontransaction_isolationSERIALIZABLE;

相关新闻

避雷按单场活动扣费平台,2026 在线投票测评不限频次新建投票评选活动

避雷按单场活动扣费平台,2026 在线投票测评不限频次新建投票评选活动

在当今数字化时代,各类比赛活动、投票竞赛层出不穷,选择一个合适的投票渠道至关重要。然而,市场上部分平台按单场活动扣费的模式,让许多活动组织者头疼不已。今天,就为大家深度测评 2026 在线投票平台,看看…

2026/7/9 1:01:41 阅读更多 →
小华芯片HC32F460之时钟实验

小华芯片HC32F460之时钟实验

平台:keil V5.31 主函数: int32_t main(void) {uint8_t i 0U;/* Register write unprotected for some required peripherals. */LL_PERIPH_WE(LL_PERIPH_EFM | LL_PERIPH_FCG | LL_PERIPH_GPIO | LL_PERIPH_PWC_CLK_RMU | LL_PERIPH_SRAM);/* Set b…

2026/7/9 1:01:41 阅读更多 →
3步构建自平衡轮腿机器人:从算法仿真到硬件部署完整指南

3步构建自平衡轮腿机器人:从算法仿真到硬件部署完整指南

3步构建自平衡轮腿机器人:从算法仿真到硬件部署完整指南 【免费下载链接】foc-wheel-legged-robot Open source materials for a novel structured legged robot, including mechanical design, electronic design, algorithm simulation, and software development…

2026/7/9 0:55:38 阅读更多 →

最新新闻

YOLO系列模型选型指南:从v10到v26的技术对比与迁移实践

YOLO系列模型选型指南:从v10到v26的技术对比与迁移实践

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 项目概述:YOLO系列模型选型困境与解决方案 在目标检测领域,YOLO系列模型始终保持着技术领先地位。作为从业…

2026/7/9 2:34:06 阅读更多 →
从字节“期权激励“到阿里“3.25“:大厂绩效变局下,普通人如何靠AI智能体提升赚钱能力?

从字节“期权激励“到阿里“3.25“:大厂绩效变局下,普通人如何靠AI智能体提升赚钱能力?

导语 2025年至2026年,互联网大厂的绩效与激励体系正在经历一场深刻的变革。从字节跳动将"字节范"与"领导力原则"深度绑定绩效、大幅提升期权/RSU在半年激励中的比重,到阿里巴巴经典的"3.25"绩效制度改革,大厂…

2026/7/9 2:32:06 阅读更多 →
LangSmith | LangChain / LangGraph Agent 全链路追踪

LangSmith | LangChain / LangGraph Agent 全链路追踪

最近一段时间学习及制作Agent,但在向量库检索、Prompt 拼接、工具调用、多轮记忆读写、多层 LLM 嵌套;运行后总会出现幻觉、回答跑偏、响应超时、Token 成本暴增,却完全无法定位根源。 传统打印日志只能零散输出片段,断点调试无法复现 LLM 非…

2026/7/9 2:32:06 阅读更多 →
Hermes Agent cron 27 个实战任务调度拆解 \(按 7 大类 \+ 错峰 5min 实战\)

Hermes Agent cron 27 个实战任务调度拆解 \(按 7 大类 \+ 错峰 5min 实战\)

适用读者: 用 Hermes Agent / Claude Code / 任何 AI 助手搭生产级 cron 自动化的独立开发者 关键词: Hermes Agent / cron / 任务调度 / 错峰 / 监控 / Supabase / 飞书 / 微信公众号 一、为什么 27 个 cron 是 Hermes Agent 产线 作者用 Hermes Agent 搭个人 AI 助手 1 个月…

2026/7/9 2:32:06 阅读更多 →
通达信最佳买卖点指标

通达信最佳买卖点指标

AA05:MA(C,5),COLOR0099CC;五日乖离率:(C-AA05)/AA05*100; BB05:ATAN((AA05/REF(AA05,1)-1)*100)*180/3.1416; 速度5:SMA(EMA((AA05-REF(AA05,1))/REF(AA05,1),3)*100,3,1); 加速度5:EMA((速度5-REF(速度5,1)),3),LINETHICK0; STICKLINE(BB05>30 AND AA05>REF(AA05,1), A…

2026/7/9 2:30:04 阅读更多 →
AI智能体如何变革材料发现:从预测到全流程自动化

AI智能体如何变革材料发现:从预测到全流程自动化

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这类AI智能体最值得关注的不是它能预测多少种材料,而是它把传统材料发现中“文献调研-理论预测-实验验证”这个漫长流程&a…

2026/7/9 2:30:04 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻