#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