Здравствуйте, мудрые программисты, помогите правильно составить триггер. Есть сайт вопросов и ответов, на нем перечень всех вопросов и напротив каждого количество ответов, вот скриншот:
В целях оптимизации, чтобы не вызывать постоянно MySQL функцию COUNT(*) решено хранить готовые расчеты этого показателя (с помощью триггеров) в отдельной таблице cnt_answ, вот таблица:
Триггеры на события insert и delete я написать смог, а как правильно написать триггер на update, в случае если например администратор захочет переместить ответ из одного вопроса в другой, после чего поле cnt_answ одного вопроса нужно увеличить на 1, а поле другого уменьшить на 1, пока получилось написать вот так:
UPDATE cnt_answ SET cnt_answ=IF(NEW.id_questions!=OLD.id_questions,cnt_answ-1,cnt_answ) WHERE id_quest=OLD.id_questions;
UPDATE cnt_answ SET cnt_answ=IF(NEW.id_questions!=OLD.id_questions,cnt_answ+1,cnt_answ) WHERE id_quest=NEW.id_questions;
Но этот код будет обращаться к таблице cnt_answ всегда, даже когда я не переношу ответ в другой вопрос, а только правлю текст ответа (поле text_answer), вот скриншот таблицы ответов:
Хотелось бы чтобы триггер срабатывал только если было изменено поле id_questions таблицы ответов, что-то вроде:
IF(NEW.id_questions!=OLD.id_questions) UPDATE cnt_answ SET cnt_answ.....
Ка это сделать?
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости