Создать триггер mysql для обновления столбца другой таблицы на основе среднего значения столбца в этой таблице

#php #mysql

#php #mysql

Вопрос:

Только что просмотрел немного документации о триггерах mysql и попытался создать триггер. Здесь прилагается изображение моих структур таблиц. У меня есть две таблицы.. введите описание изображения здесь

Моя проблема в том, что я хочу обновлять ход выполнения родительской задачи в tasks таблице всякий раз, когда в subtasks таблице обновляется ход выполнения одной из ее подзадач.

например, Complete Fees Module имеет две подзадачи: ‘Прочитать структуру’ и ‘task2’. Таким образом, значением task_progress этой задачи в таблице «задачи» должно быть среднее выполнение подзадач. т.е. (23 25) / 2;

Приведенный ниже синтаксис неправильный, я знаю…

 DELIMITER $$
CREATE TRIGGER update_progress
AFTER INSERT ON `task_status` FOR EACH ROW
begin
   DECLARE avg_progress integer;

   @avg_prog = sum of this query...
   {
   select subtask_progress from subtasks where task = NEW.task
   }

       UPDATE tasks
       SET task_progress = @avg_progress
       WHERE subtasks.task = tasks.task

END;
$$
DELIMITER ;
  

Я на правильном пути? Был бы признателен, если бы кто-нибудь предложил реально работающий триггер?

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

1. Во-первых, столбец task в subtasks должен быть идентификатором из таблицы tasks. Во-вторых, первый запрос должен выглядеть следующим образом: select AVG(subtask_progress) AS subtask_progress from subtasks where task = NEW.task

2. @CptMisery спасибо за предложение в структуре таблицы. Я знаю, что использование ID в качестве ссылки на строку другой таблицы является лучшей практикой, но это всего лишь эксперимент…