Как стать автором
Обновить

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

UPDATE files SET file_md5=MD5(file_blob) WHERE id=6
+1. Именно так правильно делать, а автор топика написал глупый запрос. Оторвать руки и заставить читать документацию.
Ладно, признаю, что я неправильно составил запрос. Опыта работы с БД не хватает. Я почему-то подумал, что MD5() работает ТОЛЬКО с SELECT. Мне на самом деле надо было назначить MD5 почти всем файлам в таблице, а не только ID = 6…

Как бы там ни было, описанный мною трюк работает и может быть при надобности использован.
Главная цель моего поста была именно в этом.
если всем то UPDATE files SET file_md5=MD5(file_blob);
Я не знаком с MySQL, но так не сработает?:
UPDATE `files` SET `file_md5` = MD5( `file_blob` )
WHERE `id` = 6
Мне бы никогда в голову не пришла мысль решать задачу создания поля с MD5 так как делает автор.
Извините но это не баг. Не всё, что присылают в багрепорт оказывается багом. По вашей ссылке вопрошающему вполне объяснили:
Thank you for the report, but currently you can't update the same table which you use in
the SELECT part.
This behaviour is documented at:
dev.mysql.com/doc/mysql/en/UPDATE.html

«Спасибо за отчет, но в настоящее время вы не можете обновлять таблицу, которую используете в запросе SELECT. Это описано в документации.»

То есть это поведение подразумевается и так сделано специально. И думаю, что и дальше так нельзя будет делать. (И я, если честно, считаю что это правильно)
на время выполнения селекта таблица лочится, что вполне логично и правильно, приведенный же запрос в посте ошибочен в своей сути, о чем и написал товарищ zed_0xff
Это не баг, как вы себе представляете результат пиления сука, на котором сидите?
Запятую забыли…
после «пиления»? :) я нарочно не поставил! :)
обфускация sql?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации