#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 в качестве ссылки на строку другой таблицы является лучшей практикой, но это всего лишь эксперимент…