Как исправить триггер ПОСЛЕ ОБНОВЛЕНИЯ - PullRequest
0 голосов
/ 05 июня 2019

Я создал систему User Point для своего сайта.Таблица выглядит следующим образом:

user_id   name    article    gallery    description    total
------------------------------------------------------------
1         joe      7          3          0             10
2         hary     3          5          5             13
3         ana      1          1          2             4

Мне нужен триггер AFTER UPDATE, который будет обновлять SUM в итоговом столбце при изменении значения в столбце, статье, галерее или описании

DELIMITER $$
CREATE TRIGGER total_trg
AFTER UPDATE point_system FOR EACH ROW
BEGIN
UPDATE point_system SET total = (article + gallery + description) FROM point_system WHERE user_id = NEW.user_id;        
END
$$
DELIMITER ;

Этот триггер не работает.Почему?

1 Ответ

0 голосов
/ 05 июня 2019

Вы не можете изменять содержимое таблицы из триггера этой таблицы (за исключением строки, в которой работает триггер, но не таким образом);в этом случае вам необходим триггер BEFORE UPDATE, в котором вы просто

SET NEW.total = NEW.article + NEW.gallery + NEW.description;

Вы используете NEW и OLD для доступа (и изменения дотриггеры) значения полей строки, ответственной за срабатывание триггера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...