Есть функция, обновления строки таблицы в БД. На входе объект , на выходе результат запроса к БД.
Как рационально реализовать эту функцию?
Сразу обновить все поля объекта или же сначала сделать запрос к БД , и сравнить старый объект и изменяемый?
Скажем выполнить только один запрос:
UPDATE `user` SET `login`='newlogin', `password`='newpassword' WHERE `id` = 1;
Или же два
SELECT * FROM `user` WHERE `id` = 1
Сравнить логин и пассворд с новыми значениями и потом еще выполнить
UPDATE `user` SET `login`='newlogin', `password`='newpassword' WHERE `id` = 1;
Спустя 4 минуты, 27 секунд (11.10.2011 - 13:49) redreem написал(а):
в чем смысл дополнительного сравнения? если юзер в кабинете меняет свой пароль, то он уже прошел авторизацию и система его однозначно идентифицировала.
Спустя 4 минуты, 14 секунд (11.10.2011 - 13:54) h234 написал(а):
Это просто пример. На деле может быть любой объект с любым количеством полей. Так если у объекта 10 полей,а изменилось только одно, рационально ли делать UPDATE для всех полей или все же лдучше сравнить со старыми значениями?
Спустя 4 минуты, 6 секунд (11.10.2011 - 13:58) yurij__ написал(а):
дополнительный запрос точно не рационально делать. Выбирая из этих двух вариантов, лучше обновить все поля.
Спустя 32 минуты, 33 секунды (11.10.2011 - 14:30) redreem написал(а):
я отдельной переменной формирую набор полей, которые требуются для обновления и все.
$updatedata формируется в зависимости от ситуации.
"UPDATE `user` SET ".$updatedata." WHERE `id` = 1";
$updatedata формируется в зависимости от ситуации.
Спустя 29 минут (11.10.2011 - 14:59) h234 написал(а):
Цитата (redreem @ 11.10.2011 - 11:30) |
я отдельной переменной формирую набор полей, которые требуются для обновления и все. |
спасибо, что то не подумал сразу