MySQL триггер на update

261
27 февраля 2018, 03:10

Здравствуйте, мудрые программисты, помогите правильно составить триггер. Есть сайт вопросов и ответов, на нем перечень всех вопросов и напротив каждого количество ответов, вот скриншот:

В целях оптимизации, чтобы не вызывать постоянно 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.....

Ка это сделать?

READ ALSO
Ошибка в Jommla 3.8.2(Joomshopping) - Unknown column 'product_ean' in 'where clause'

Ошибка в Jommla 3.8.2(Joomshopping) - Unknown column 'product_ean' in 'where clause'

Всем доброго времени суток! Проблема в админ-панели JoomlaНе могу удалить товар в joomshopping (версия 4

237
Проблема с Apaсhe2 UTF-8

Проблема с Apaсhe2 UTF-8

День добрыйСитуация такова: при открытии изображении, которое хранится на сервере, браузер выдает ошибку

259
Метод: получить из файла всё после строки номер 2 [требует правки]

Метод: получить из файла всё после строки номер 2 [требует правки]

Какой метод для чтения файлов существует для того, чтобы получить из файла всё что записано после строки, к примеру, номер 2?

236
C# TLSharp Вступление в каналы

C# TLSharp Вступление в каналы

Пишу телеграм-клиент для ПКВозник вопрос, решение которого не нашел в гугле

266