mysql自动提交的问题
迷茫
迷茫 2017-04-17 15:07:54
[MySQL讨论组]

我使用的mysql5.5
自动提交是默认打开的。
现在在终端执行一条事物。

begin;
update user set username='Lee' where id=1;

  1. 按说这条事物是自动commit的才对啊,因为默认是自动提交。为什么不是自动的commit,还是在等待人工commit。

  2. mysql的事物发现有个问题,我开启事物,然后insert一条数据,没有commit。
    然后select,发现这条数据竟然已经加进去了,这是什么鬼,在没commit之前数据不应该在内存里的么。

  3. 然后我执行rollback。再试图开启事物insert一条数据,commit。这时候不对了,新产生的id应该是上一条回滚的那条id才对啊,为什么是+1了呢。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
PHP中文网

开启事务必须手动提交,详情见我写的一篇事务隔离级别文章

PHP中文网

吐槽一下,是事务,不是事物……
1、你已经手动打开了事务,事务在你控制之下,所以你必须手动提交才会生效,回滚同理;
2、MySQL默认的事务隔离级别是RR级,所以可以读到同一事务内的数据;
3、自增id不受事务影响,不论成功提交还是失败回滚,都会自增,参考资料;

其实对于这三个问题,我也只是知其然不知其所然,但这些问题都可以通过搜索引擎得到答案。

大家讲道理

自动提交是不写begin,事务的概念没有搞清楚,搜索有很多答案。

黄舟

先把错别字改了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号