开发者社区> 问答> 正文

mysql sql中部分执行成功会怎样?

1:update from tb_test set mid = 1 where id in(1,2,3,……)
2:insert into tb_test(id,mid) values (1,2), (2,3), (3,4), (……)

听说:写操作时会自动加排它锁,并且上面这种情况,锁行是一行一行的锁,然后最后同时释放锁,即锁一行,操作一行,直至没有条件,最后同时释放所有锁 by http://hedengcheng.com/?p=771
不开启事务,InnoDB表

问题1:假如更新/操作时部分执行失败了(由于主键或者唯一索引等原因导致更新失败),但是按照上面理解的,对写操作的分析,虽然最终sql执行失败,那是不是会有部分更新/新增操作成功了呢?

问题2:对于sql部分执行成功,会出现“部分生效”好像是有个mysql或者pdo的配置啊,上次在这里看到一个类似的问题,好像有说到,找半天找不到真是急死人了。

展开
收起
a123456678 2016-07-04 14:12:17 2113 0
2 条回答
写回答
取消 提交回答
  • 这个是事务性的处理,会先加锁的,执行失败后,事务性的操作会自动回滚,不会有问题的.

    2019-07-17 19:50:38
    赞同 展开评论 打赏
  • 谢邀,我找来一些之前的回答整理一下以供你的参考。
    mysql INNODB update语句加锁顺序

    2019-07-17 19:50:38
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像