MySQL InnoDB引擎下,更新一条记录与原记录一样会怎么样?
我们创建了一个简单的表 t,并插入一行,然后对这一行做修改。
mysql> CREATE TABLE `t` (
`id` int(11) NOT NULL primary key auto_increment,
`a` int(11) DEFAULT NULL
) ENGINE=InnoDB;
insert into t values(1,2);
这时候,表 t 里有唯一的一行数据 (1,2)。假设,我现在要执行:
mysql> update t set a=2 where id=1;
即要更新的记录 实际上与原记录一样
你会看到这样的结果:
结果显示,匹配 (rows matched) 了一行,修改 (Changed) 了 0 行。
仅从现象上看,MySQL 内部在处理这个命令的时候,可以有以下三种选择:
-
更新都是先读后写的,MySQL 读出数据,发现 a 的值本来就是,不更新,直接返回,执行结束;
- <