使用mysql数据库的小伙伴们,对mysql怎么控制事物,语句的提交一定要了解清楚,如果应用代码对事物使用不当,就会造成Mysql事物部分update语句成功,部分失败。下面就详细解释其产生的原因
首先说一个mysql的事物提交的参数
mysql> show variables like 'autocommit'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | autocommit | ON | +---------------+-------+ 1 row in set (0.01 sec)
复制
这个参数很好理解,如果autocommit设置为1,就是开启mysql数据库自动提交的特性,设置为0,则不开启自动提交。这里需要提醒大家的是,设置为1之后,数据库自动提交的意思,每当应用请求一个update,或者insert,或者delete语句时,Mysql就会提交这个语句。请注意,如果应用逻辑要实现的是一个事物包含3条update语句,大家都会认为,3个Update语句如果有一个执行失败,则全部回滚,但是请注意,应用如果没有在代码中显示的去启用事物,mysql数据库执行情况是这样的
1. update t_test set name='test1' where id=1; 2. update t_test set name='test2' where id=2; 3. update t_test set name='test3' where id=3;
复制
数据库成功执行了1和2两个update,第三个sql语句因为锁等或者连接断开,并没有执行,最后的结果是什么呢,就是语句1和语句2被数据库正常提交,并落盘了。我换一个写法,大家就明白了
1. update t_test set name='test1' where id=1; commit; 2. update t_test set name='test2' where id=2; commit; 3. update t_test set name='test3' where id=3;(锁等或者连接断开,没有执行)
复制
因为事物没有控制,就导致部分update语句成功,部分失败。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2938次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
847次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
491次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
429次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
284次阅读
2025-04-30 17:37:37
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
276次阅读
2025-04-15 15:27:53
SQL优化 - explain查看SQL执行计划(下)
金同学
266次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
246次阅读
2025-04-30 12:17:54
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
228次阅读
2025-04-28 11:01:25