У меня есть PHP-функция, которую я создаю, которая будет использоваться для массового «завершения» задач проекта, которые принадлежат конкретному проекту.
Если у проекта 50 записей задач, то мое текущее решение обновит все 50 записей, установив status
столбец к Completed
и date_modified
столбец к текущему сейчас DateTime. Это новый date_modified
значение также будет неверным, поскольку только некоторые из статусов фактически изменились по сравнению с их предыдущим значением!
Я хотел бы создать запрос SQL, который вместо этого …
status
=== Completed
date_modified
поле, это должно только обновить этот DateTime для записей, которые фактически обновляются сейчас!Вот часть SQL, который я взял из другого запроса, который сделал что-то совершенно другое, но он имеет правильные имена таблиц и полей и демонстрирует, как CASE Statement
может быть правильный путь. Однако я не знаю достаточно MySQL, чтобы самостоятельно выполнять такой сложный запрос, и был бы признателен за любую помощь, которую я могу получить!
«Обновить статус и дату из задач, где статус не завершен» довольно легко переводится на:
UPDATE tasks SET status = 'Completed', date_modified = NOW() WHERE status != 'Completed'
(вы также можете установить date_modified
столбец вверх таким образом, что автоматически обновляет текущую метку времени с каждым обновлением. Не нашел ссылку на документацию, но по запросу «on update current_timestamp»)
Других решений пока нет …