mysql case when update 更新顺序
来源:互联网 发布:刘诗诗婚纱同款 淘宝 编辑:程序博客网 时间:2024/06/06 04:38
首先认为,在同一个事务里更新多条记录,mysql执行顺序和binlog的生成顺序一致
java代码中调用jdbc如下次序更新数据库,
Tx.begin
SQL1
SQL2
SQL3
Tx.end
那么生成的binlog还是SQL1、SQL2、SQL3执行顺序
但是在含有case when update语句中,生成的binlog顺序和,不是按照语句中从左到右的顺序的
Connection con = DriverManager.getConnection(url, user, password);Statement stmt = con.createStatement();con.setAutoCommit(false);String st = "UPDATE `jw_user` SET `nick_name` = 1WHEN id = 6 THEN 1WHEN id = 5 THEN 1WHEN id = 4 THEN 1592 END";stmt.execute(st);con.commit();操作结果,id为 4,5,6的对应的nick_name字段均改为1,但是id为7的nick_name对应的值从0改为null,这个原因要再查下?
binlog内容
13600996 BEGIN13600997 /*!*/;13600998 # at 32295611413600999 # at 32295616613601000 #130626 18:40:57 server id 110 end_log_pos 322956166 Table_map: `jingwei`.`jw_user` mapped to number 652637313601001 #130626 18:40:57 server id 110 end_log_pos 322956291 Update_rows: table id 6526373 flags: STMT_END_F13601002 ### UPDATE jingwei.jw_user13601003 ### WHERE13601004 ### @1=413601005 ### @2='1592'13601006 ### SET13601007 ### @1=413601008 ### @2='1'13601009 ### UPDATE jingwei.jw_user13601010 ### WHERE13601011 ### @1=513601012 ### @2='4925'13601013 ### SET13601014 ### @1=513601015 ### @2='1'13601016 ### UPDATE jingwei.jw_user13601017 ### WHERE13601018 ### @1=613601019 ### @2='2952'13601020 ### SET13601021 ### @1=613601022 ### @2='1'13601023 ### UPDATE jingwei.jw_user13601024 ### WHERE13601025 ### @1=713601026 ### @2='0'13601027 ### SET13601028 ### @1=713601029 ### @2=NULL 13601030 # at 32295629113601031 #130626 18:40:57 server id 110 end_log_pos 322956318 Xid = 207311583813601032 COMMIT/*!*/;
发现mysql内部(innodb)执行更新的顺序是按照主键的升序进行的,而不是sql语句字面顺序,先执行id等于6的,再执行id等于5的,最后执行id等于4的
- mysql case when update 更新顺序
- MySql Update与case when
- SQL 使用update case when 批量更新
- update case when 問題
- update case when
- update case when
- 在update中使用case when更新列
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- Mysql 一条SQL语句实现批量更新数据,update结合case、when和then的使用案例
- mysql case when
- mysql case when
- mysql case when
- mysql 语句case when
- mysql 语句case when
- mysql 语句case when
- mysql 语句case when
- Mysql Case When
- Jakarta-Common-Configuration使用笔记
- 在上篇,as3反射基础上,实现,类对象成员变量批量复制
- RFB协议解析
- Next Permutation
- Android 二级菜单
- mysql case when update 更新顺序
- Java语言深入-关于Java语言的内存泄漏
- 微信开放平台表达了张小龙怎样的世界观?
- cocos2d-x 一道简单面试题,触摸事件的重新分发
- 缓冲Bitmaps
- Android滑动菜单特效(半路上停下来了)
- ASP.NET----My97DatePicker日历组件在ASP.NET中的使用
- python 对象 类
- maven hibernate版本冲突报错