新闻详情

新闻详情

首页 / 资讯中心 / 详情

mysql 专业笔记 -- 第 45 章:事务(Transaction)

发布时间:2026/9/30 2:30:16来源:尧图网络
mysql 专业笔记 -- 第 45 章:事务(Transaction)
第 45.1 节:开始事务事务是一组顺序执行的 SQL 语句(如SELECT、INSERT、UPDATE或DELETE),作为一个单独的工作单元执行。换句话说,只有当组内的每个操作都成功时,事务才算完成。如果事务中的任何操作失败,整个事务将失败。银行转账是解释此概念的最佳示例。假设要在两个账户之间转账。你需要编写如下 SQL 语句:检查第一个账户中是否有请求的金额从第一个账户扣除请求的金额将金额存入第二个账户如果这些过程中的任何一个失败,整个过程应回滚到之前的状态。事务的 ACID 属性事务具有以下四个标准属性:原子性(Atomicity):确保工作单元内的所有操作都成功完成;否则,事务在失败点中止,之前的操作回滚到之前的状态。一致性(Consistency):确保数据库在成功提交的事务后正确更改状态。隔离性(Isolation):使事务能够独立且透明地操作。持久性(Durability):确保已提交事务的结果在系统故障后仍然存在。事务以START TRANSACTION或BEGIN WORK语句开始,以COMMIT或ROLLBACK语句结束。开始和结束语句之间的 SQL 命令构成事务的主体。STARTTRANSACTION;SET@transAmt='500';SELECT@availableAmt:=ledgerAmtFROMaccTableWHEREcustomerId=1FORUPDATE;UPDATEaccTableSETledgerAmt=ledgerAmt-@transAmtWHEREcustomerId=1;UPDATEaccTableSETledgerAmt=ledgerAmt+@transAmtWHEREcustomerId=2;COMMIT;使用START TRANSACTION时,autocommit保持禁用状态,直到你使用COMMIT或ROLLBACK结束事务。然后autocommit模式恢复为之前的状态。FOR UPDATE表示(并锁定)事务期间的行。当事务保持未提交状态时,其他用户无法看到此事务的更改。事务的一般流程通过BEGIN WORK或START TRANSACTION开始事务。运行所有 SQL 语句。检查所有语句是否按需求执行。如果是,则发出COMMIT命令;否则发出ROLLBACK命令将一切恢复到之前的状态。注意:即使在使用(或可能最终使用)Galera/PXC 时,也应在COMMIT后检查错误。第 45.2 节:COMMIT、ROLLBACK 和 AUTOCOMMITAUTOCOMMITMySQL 会自动提交不属于事务的语句。任何未以BEGIN或START TRANSACTION开头的UPDATE、DELETE或INSERT语句的结果将立即对所有连接可见。AUTOCOMMIT变量默认设置为true。可以通过以下方式更改:-- 设置 autocommit 为 falseSETAUTOCOMMIT=false;-- 或SETAUTOCOMMIT=0;-- 设置 autocommit 为 trueSETAUTOCOMMIT=true;-- 或SETAUTOCOMMIT=1;-- 查看 AUTOCOMMIT 状态SELECT@@autocommit;COMMIT如果AUTOCOMMIT设置为false且事务未提交,则更改仅对当前连接可见。执行COMMIT语句后,更改将提交到表中,结果对所有连接可见。考虑两个连接来说明这一点:连接 1-- 在设置 autocommit=false 之前向新表添加一行mysqlINSERTINTOtestTableVALUES(1);-- 设置 autocommit = falsemysqlSETautocommit=0;mysqlINSERTINTOtestTableVALUES(2),(3);mysqlSELECT*FROMtestTable;+-----+|tId|+-----+|1||
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

图深度学习驱动产业链价格预测:从聚丙烯图建模到LSTM融合实践 2026/9/30 3:24:43

图深度学习驱动产业链价格预测:从聚丙烯图建模到LSTM融合实践

简介:研究聚焦产业链上大宗商品价格间的非线性关联与上下游联动效应,突破经典预测算法的局限,提出一种基于图深度学习的大宗商品价格预测方法。该论文将产品现货价格、期货价格、产量等作为节点属性,以产品结构熵量化上下游关系作…

阅读更多 →
Linux文本处理命令实战:grep、awk、sed与管道组合指南 2026/9/30 3:24:43

Linux文本处理命令实战:grep、awk、sed与管道组合指南

我最早意识到文本处理命令这东西的价值,是在一次线上日志排查里。某个跳转接口突然报错,启动文件、环境变量、进程输出全都要靠命令去翻。就在那次,我把cat、grep、awk、sed一口气串下来,不到十分钟就定位了问题。从那时起&#x…

阅读更多 →
uni-app 微信小程序登录页 UI:渐变背景、焦点反馈与真机适配 2026/9/30 3:24:43

uni-app 微信小程序登录页 UI:渐变背景、焦点反馈与真机适配

现在的登录页,光能登进去已经不够了。用户打开小程序,第一眼看到的就是这个页面,它承担的是"第一印象"的活儿——能不能让人愿意把账号密码交出去,很大程度取决于这一屏给人的感觉。这篇是"uni-app 微信小程序之好…

阅读更多 →
政务知识库接入DeepSeek:从RAG链路到本地部署的完整指南 2026/9/30 3:24:43

政务知识库接入DeepSeek:从RAG链路到本地部署的完整指南

简介:这份电子政务接入DeepSeek模型构建知识库的解决方案PPT,面向政务信息化规划人员、解决方案架构师及AI应用工程师,针对政务数据孤岛、跨部门协同效率低、智能化支撑不足等典型痛点,提供了从规划到落地的完整技术路径。资源为单…

阅读更多 →
基于SpringBoot+Vue的古树名木管理系统毕业设计实战指南 2026/9/30 3:24:43

基于SpringBoot+Vue的古树名木管理系统毕业设计实战指南

每年这个时候,打算做毕设的同学差不多都开始慌起来了:选什么题目能稳过?技术栈用什么才不会被答辩老师挑毛病?工作量大不大,跑不跑得起来?如果你手头正好摆着“古树名木管理系统”这个题目,或者…

阅读更多 →
Docker Swarm集群高可用部署与故障恢复实战 2026/9/30 3:24:36

Docker Swarm集群高可用部署与故障恢复实战

先说明一下,这篇文章主要讲的是Docker Swarm集群的高可用部署与故障恢复实战。我得先把话说在前面,如果你在中小规模集群里试过Kubernetes,又被它那一堆概念折磨得够呛,那你大概率会喜欢Swarm这种“一条命令起集群”的清爽感。这篇…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉