@qwermus

Как правильно реализовать триггерами обновление родителя в MySQL?

Всем привет.
Есть таблица комментариев, которая содержит следующие поля:

user_id - ИД пользователя, который оставил коммент
parent_id - ИД объекта, который прокомментировали
comment - текст комментария
reply_id - ИД комментария, на который был дан ответ
count_replies - Сколько было дано ответов на данный комент


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

В таблице есть столбец count_replies, который должен содержать общее количество ответов, т.е. для комента 2 там будет храниться число 1 (один ответ коментом 3), а для комента 1 там будет число 2 (2 раза ответили коментами 2 и 3).

Увеличение этого счётчика я хочу реализовать триггерами. понятно, что можно средствами ПХП при добавлении комента пробегать всех родителей, но задача сделать именно триггерами.

Естественно, триггер даёт ошибку "
General error: 1442 Can't update table in stored function/trigger because it is already used by statement which invoked this stored function/trigger
." , потому что обновлять ту же таблицу, с которой производится действие, нельзя.

А теперь вопрос - такое сделать нельзя вообще или всё-же есть лозейки?

Пример триггера:

BEGIN
        IF (NEW.reply_id IS NOT NULL AND NEW.reply_id > 0 AND NEW.reply_id != NEW.id)
        THEN
            UPDATE comments SET count_replies = count_replies + 1 WHERE id = NEW.reply_id;
        END IF;
END;
  • Вопрос задан
  • 28 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Fomichevap
Всё правильно написано и будет работать, только триггер нужен AFTER INSERT.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы