запускает обновление счетчика другой таблицы

#mysql

#mysql

Вопрос:

Кажется, не удается заставить этот триггер работать… Некоторая помощь была бы признательна.

 DROP TRIGGER IF EXISTS trigger_votes;

CREATE TRIGGER trigger_votes AFTER INSERT ON votes
UPDATE collections
SET IF(vote = 1, loves, hates) = IF(vote = 1, loves, hates)   1
WHERE collections.id = NEW.collection_id;
  

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

Ответ №1:

 DELIMITER $$

CREATE TRIGGER trigger_votes AFTER INSERT ON votes FOR EACH ROW
BEGIN
  UPDATE collections
    SET loves = CASE NEW.vote WHEN 1 THEN loves   1 ELSE loves END
        ,hates = CASE NEW.vote WHEN 1 THEN hates ELSE hates   1 END 
    WHERE collections.id = NEW.collection_id;
END $$

DELIMITER ;
  

Комментарии:

1. # 1064 — У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘UPDATE collections SET loves = CASE NEW.голосуйте, КОГДА 1 ЗАТЕМ любит 1 ЕЩЕ любит EN’ в строке 2.

2. Я даже не могу получить базовый триггер CREATE TRIGGER triggervotes ПОСЛЕ ВСТАВКИ В votes UPDATE collections SET loves = loves 1, ГДЕ id = NEW.collection_id; Для работы

3. Хорошо, все, что я сделал, это добавил разделитель $$ в начало и завернул инструкцию UPDATE ДЛЯ КАЖДОЙ СТРОКИ BEGIN и END; и это сработало.