UPDATE rent_contacts SET contacts_mobile='11111' WHERE rent_unit_code in (SELECT rent_unit_code FROM rent_unit );
第一种情况: 条件无索引
sql一执行:
BEGIN;
UPDATE contacts SET mobile='11111' WHERE code in ('3424342' );
sql二执行 UPDATE contacts SET mobile='11111' WHERE code in ('1111' );
sql二执行受阻,sql一commit之后,sql二可执行成功
结论:条件无索引,锁表
第二种情况: 条件有索引,in语句是确定的值
sql一执行:
BEGIN;
UPDATE contacts SET mobile='11111' WHERE code in ('3424342' );
sql二执行 UPDATE contacts SET mobile='11111' WHERE code in ('1111' );
sql二正常执行,sql二不依赖sql一的commit
结论:条件有索引,锁行
第三种情况: 条件有索引,in语句是复杂查询
sql一执行:
BEGIN;
UPDATE contacts SET mobile='11111' WHERE code in ( select code from user where id=1);
sql二执行 UPDATE contacts SET mobile='11111' WHERE code in ('1111' );
sql二执行受阻,sql一commit,sql二正常执行
结论:条件有索引,in语句是不确定的值,锁表
分享到:
相关推荐
MySQL中update操作会自动加锁吗,看了就知道答案!!!
MySQL数据库中group by语句与update语句的用法研究.pdf
根据update语句自动生成select语句.
刚开始你可能会想到使用循环执行多条UPDATE语句的方式,就像以下的python程序示例: for x in xrange(10): sql = ''' UPDATE mytable SET myfield='value' WHERE other_field='other_value'; ''' 这种方法并没有...
update语句是PHP+MySQL中常用的操作,判断update语句是否执行成功是其中非常重要的一个环节。本文就以实例展示了php+MySQL判断update语句是否执行成功的方法。分享给大家供大家参考之用。具体方法如下: 代码一: $...
在 MySQL中,可以使用 UPDATE 语句来修改、更新一个或多个表的数据。 基础语法 UPDATE 语句的基本语法 使用 UPDATE 语句修改单个表,语法格式为: UPDATE <表名> SET 字段 1=值 1 [,字段 2=值 2… ] [WHERE 子句...
本文详细介绍了,mysql中update语句的用法,系统全面的学习下update更新语句的用法,有需要的朋友可以参考下
主要介绍了mysql update正则替换sql语句的相关资料,需要的朋友可以参考下
mysql update语句的用法详解.doc
以前有过一篇关于MySQL查询语句的执行过程,这里总结一下update语句的执行过程。由于update涉及到数据的修改,所以,很容易推断,update语句比select语句会更复杂一些。 1,准备 创建一张test表 CREATE TABLE `...
主要介绍了MySQL中UPDATE语句使用的实例教程,包括UPDATE的使用中所容易引起的性能问题的分析,需要的朋友可以参考下
要替换某一个字段中的部分内容,可以用update 语句: UPDATE 表名 SET 字段名= REPLACE( 替换前的字段值, ‘替换前关键字’, ‘替换后关键字’ ) WHERE 字段名 REGEXP “替换前的字段值”; 比如替换标题里面的产品...
从mysql数据库迁移到postgres数据库转换ddl语句的工具,添加了自动更新时间的触发器。
SQL语句中的更新语句update是最常用的语句之一,言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。 用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的...
主要介绍了MySQL中UPDATE与DELETE语句的使用教程,是MySQL入门学习中的基础知识,需要的朋友可以参考下
上一篇文章我详解介绍了mysql中的查询语句是如何工作...接下来分析器进行词法语法校验,来识别这个语句是update语句。 然后优化器会选择ID这个索引。 最后执行器负责执行。 目前看来,更新语句和查询语句的执行好像没有
本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 测试环境 MySQL5.7.25 Centos 7.4 binlog_format为ROW 参数 root@localhost : (none) 04:53:15> show...