Количество обновленных столбцов, а не строк

#mysql

#mysql

Вопрос:

1 строка была обновлена с использованием следующего оператора update.

Но как мне узнать, был обновлен только 1 столбец или более одного и какой именно?

 mysql> select * from table1;
 ------ ------ -------- 
| pid  | name | city   |
 ------ ------ -------- 
|    1 | aa   | delhi  | 
|    2 | bb   | delhi  | 
|    3 | cc   | mumbai | 
|    4 | abc  | mumbai | 
 ------ ------ -------- 
4 rows in set (0.00 sec)

mysql> update table1 set city='pune', name='salman' where pid = 4;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
  

Комментарии:

1. Зачем вам нужна такая функциональность? В запросе на обновление вы тот, кто решает, как могут быть обновлены столбцы и какие.

2. Могу я спросить вас, чего вы хотите достичь с помощью этого?

3. AFAIK MySQL не предоставит вам эту информацию. 🙁

Ответ №1:

Визуально вы могли бы проверить, запустив select еще раз, но я не думаю, что вы этого хотите.

Одним из способов было бы сохранить историю изменений и использовать какой-то флаг для текущей строки. итак, вы должны выбрать текущую строку и обновить текущую строку, чтобы она устарела, затем вставить новую строку со всеми данными.

Ответ №2:

MySQL перезапишет результаты, даже если значения столбцов совпадают. Он не проверяет, совпадают ли текущее и новое значения столбцов, он просто делает то, что вы ему указываете, поскольку вы тот, кто решает, что обновляется.

Комментарии:

1.@Micahel: Согласно документам MySQL, это неверно: «Если вы присваиваете столбцу значение, которое он имеет в данный момент, MySQL замечает это и не обновляет его». dev.mysql.com/doc/refman/5.1/en/update.html