Всем привет.
Есть таблица комментариев, которая содержит следующие поля:
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;