今天很忙,原本想存成草稿有空在编辑的。结果一不当心发布了,因此只能先写完了。 html
先描述下背景,一个提问的问题 mysql
之前我认为,只要是update的where条件能够找到数据的,那么返回的影响行数必然是大于0的。
写了一个SQL: UPDATE tss_view_template SET name='默认风格' where id=1; 结果返回影响行数是0,可是SQL变成这样: UPDATE tss_view_template SET name='默认风格',gmt_create=now() where id=1; 结果返回影响行数是1 难道说这条update的执行以前,会先比对你要更新的字段,若是是同样的,就不算是更新 仍是说这个是MySQL的特性
把这个问题简单的概括下就是,updae语句若是不实际改变数据,那么会不会在底层作操做? sql
因而在本地作了一下测试 oracle
mysql> update test set a=1 where b=2;
Query OK, 0 rows affected
Rows matched: 1 Changed: 0 Warnings: 0
mysql> select row_count();
+-------------+
| row_count() |
+-------------+
| 0 |
+-------------+
1 row in set
mysql> update test set a=