Задать вопрос
@shostak

Как в MySQL-триггере обновить родительскую запись в той же таблице?

Дано:
Таблица comments с полями id, parent_id и child_count.

Задача:
После добавления дочернего комментария инкрементировать значение child_count у родительского.

Поскольку обновлять ту же таблицу в триггере запрещено, появляется следующая ошибка:
Can't update table in stored function/trigger because it is already used by statement which invoked this stored function/trigger

Какие существуют пути решения (или обхода) данной задачи?
  • Вопрос задан
  • 96 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Отказаться от триггера, в одной транзакции делать два запроса - на добавление комментария и на увеличение счётчика родителя.
Ответ написан
Комментировать
@immelnikoff
Изучаю БД
Ну, если в лоб, то видится такой вариант.
Создаете таблицу comments_buffer с одним полем comments_id и добавляете в триггер строчку, которая пишет в эту таблицу id строки, в которой нужно инкрементировать поле child_count.
И на таблицу comments_buffer вешаете триггер на апдейт, который будет уже апдейтить таблицу comments (child_count = child_count + 1) .
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы